[core] add ability to transform URLs before they're requested from the Internet
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user