summaryrefslogtreecommitdiff
path: root/platform/android/src/offline/offline_manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/src/offline/offline_manager.cpp')
-rw-r--r--platform/android/src/offline/offline_manager.cpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/platform/android/src/offline/offline_manager.cpp b/platform/android/src/offline/offline_manager.cpp
index c6432f766a..07e10d4c81 100644
--- a/platform/android/src/offline/offline_manager.cpp
+++ b/platform/android/src/offline/offline_manager.cpp
@@ -121,7 +121,8 @@ void OfflineManager::registerNative(jni::JNIEnv& env) {
METHOD(&OfflineManager::setOfflineMapboxTileCountLimit, "setOfflineMapboxTileCountLimit"),
METHOD(&OfflineManager::listOfflineRegions, "listOfflineRegions"),
METHOD(&OfflineManager::createOfflineRegion, "createOfflineRegion"),
- METHOD(&OfflineManager::mergeOfflineRegions, "mergeOfflineRegions"));
+ METHOD(&OfflineManager::mergeOfflineRegions, "mergeOfflineRegions"),
+ METHOD(&OfflineManager::putResourceWithUrl, "putResourceWithUrl"));
}
// OfflineManager::ListOfflineRegionsCallback //
@@ -201,5 +202,30 @@ void OfflineManager::MergeOfflineRegionsCallback::onMerge(jni::JNIEnv& env,
callback.Call(env, method, jregions);
}
+void OfflineManager::putResourceWithUrl(jni::JNIEnv& env,
+ const jni::String& url_,
+ const jni::Array<jni::jbyte>& arr,
+ jlong modified,
+ jlong expires,
+ const jni::String& eTag_) {
+ auto url = jni::Make<std::string>(env, url_);
+ auto data = std::make_shared<std::string>(arr.Length(env), char());
+ jni::GetArrayRegion(env, *arr, 0, data->size(), reinterpret_cast<jbyte*>(&(*data)[0]));
+ mbgl::Resource resource(mbgl::Resource::Kind::Unknown, url);
+ mbgl::Response response;
+ response.data = data;
+ if (eTag_) {
+ response.etag = jni::Make<std::string>(env, eTag_);
+ }
+ if (modified > 0) {
+ response.modified = Timestamp(mbgl::Seconds(modified));
+ }
+ if (expires > 0) {
+ response.expires = Timestamp(mbgl::Seconds(expires));
+ }
+
+ fileSource.put(resource, response);
+}
+
} // namespace android
} // namespace mbgl