From e2d8a83664a2705edc762ac00dcaf7eead2ae6fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20K=C3=A4fer?= Date: Thu, 16 Feb 2017 18:28:07 +0100 Subject: [core] add ability to transform URLs before they're requested from the Internet --- platform/default/default_file_source.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'platform/default/default_file_source.cpp') 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>)> callback) { try { callback({}, offlineDatabase.listRegions()); @@ -187,6 +191,15 @@ std::string DefaultFileSource::getAccessToken() const { return thread->invokeSync(&Impl::getAccessToken); } +void DefaultFileSource::setResourceTransform(std::function 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 DefaultFileSource::request(const Resource& resource, Callback callback) { class DefaultFileRequest : public AsyncRequest { public: -- cgit v1.2.1