diff options
author | Chris Loer <chris.loer@gmail.com> | 2018-10-17 10:43:58 -0700 |
---|---|---|
committer | Chris Loer <chris.loer@mapbox.com> | 2018-10-17 12:53:24 -0700 |
commit | aab55cfbcdbcdea3610beb5f02d276d2e417cedb (patch) | |
tree | c1998925d0c96da7b11ce2c9121b8b263b5168ce /platform/darwin/src/MGLOfflineStorage.mm | |
parent | c66f92f4529b25d031f9c93687761647c48d8ae8 (diff) | |
download | qtlocation-mapboxgl-aab55cfbcdbcdea3610beb5f02d276d2e417cedb.tar.gz |
[darwin,test] Add "must-revalidate" support to putResourceWithURL
Testing must-revalidate: true required an expiration date in the future, which exposed a round-tripping problem from translating NSDate to time_point based on now().
Use epoch of 1970 instead (although technically it's not guaranteed to be the epoch for system_clock until C++20)
Diffstat (limited to 'platform/darwin/src/MGLOfflineStorage.mm')
-rw-r--r-- | platform/darwin/src/MGLOfflineStorage.mm | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/platform/darwin/src/MGLOfflineStorage.mm b/platform/darwin/src/MGLOfflineStorage.mm index 78bcb53e7c..87df6912fb 100644 --- a/platform/darwin/src/MGLOfflineStorage.mm +++ b/platform/darwin/src/MGLOfflineStorage.mm @@ -473,21 +473,22 @@ const MGLExceptionName MGLUnsupportedRegionTypeException = @"MGLUnsupportedRegio return attributes.fileSize; } --(void)putResourceWithUrl:(NSURL *)url data:(NSData *)data modified:(NSDate * _Nullable)modified expires:(NSDate * _Nullable)expires etag:(NSString * _Nullable)etag { +-(void)putResourceWithUrl:(NSURL *)url data:(NSData *)data modified:(NSDate * _Nullable)modified expires:(NSDate * _Nullable)expires etag:(NSString * _Nullable)etag mustRevalidate:(BOOL)mustRevalidate { mbgl::Resource resource(mbgl::Resource::Kind::Unknown, [[url absoluteString] UTF8String]); mbgl::Response response; response.data = std::make_shared<std::string>(static_cast<const char*>(data.bytes), data.length); + response.mustRevalidate = mustRevalidate; if (etag) { response.etag = std::string([etag UTF8String]); } if (modified) { - response.modified = mbgl::util::now() + std::chrono::duration_cast<mbgl::Seconds>(MGLDurationFromTimeInterval(modified.timeIntervalSinceNow)); + response.modified = mbgl::Timestamp() + std::chrono::duration_cast<mbgl::Seconds>(MGLDurationFromTimeInterval(modified.timeIntervalSince1970)); } if (expires) { - response.expires = mbgl::util::now() + std::chrono::duration_cast<mbgl::Seconds>(MGLDurationFromTimeInterval(expires.timeIntervalSinceNow)); + response.expires = mbgl::Timestamp() + std::chrono::duration_cast<mbgl::Seconds>(MGLDurationFromTimeInterval(expires.timeIntervalSince1970)); } _mbglFileSource->put(resource, response); |