diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2017-02-16 18:28:07 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2017-02-20 14:36:27 +0100 |
commit | e2d8a83664a2705edc762ac00dcaf7eead2ae6fd (patch) | |
tree | 93b0bfdb9d6f93ddcee9c8699976ea7cee110c40 /platform/default/default_file_source.cpp | |
parent | 8669f933fdaf957253d7ec6b7453b95e93adc1b1 (diff) | |
download | qtlocation-mapboxgl-e2d8a83664a2705edc762ac00dcaf7eead2ae6fd.tar.gz |
[core] add ability to transform URLs before they're requested from the Internet
Diffstat (limited to 'platform/default/default_file_source.cpp')
-rw-r--r-- | platform/default/default_file_source.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/platform/default/default_file_source.cpp b/platform/default/default_file_source.cpp index 894ec65a5e..3742414f3d 100644 --- a/platform/default/default_file_source.cpp +++ b/platform/default/default_file_source.cpp @@ -46,6 +46,10 @@ public: return onlineFileSource.getAccessToken(); } + void setResourceTransform(OnlineFileSource::ResourceTransform&& transform) { + onlineFileSource.setResourceTransform(std::move(transform)); + } + void listRegions(std::function<void (std::exception_ptr, optional<std::vector<OfflineRegion>>)> callback) { try { callback({}, offlineDatabase.listRegions()); @@ -187,6 +191,15 @@ std::string DefaultFileSource::getAccessToken() const { return thread->invokeSync(&Impl::getAccessToken); } +void DefaultFileSource::setResourceTransform(std::function<std::string(Resource::Kind, std::string&&)> transform) { + auto loop = util::RunLoop::Get(); + thread->invoke(&Impl::setResourceTransform, [loop, transform](Resource::Kind kind_, std::string&& url_, auto callback_) { + return loop->invokeWithCallback([transform](Resource::Kind kind, std::string&& url, auto callback) { + callback(transform(kind, std::move(url))); + }, kind_, std::move(url_), callback_); + }); +} + std::unique_ptr<AsyncRequest> DefaultFileSource::request(const Resource& resource, Callback callback) { class DefaultFileRequest : public AsyncRequest { public: |