diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-01-19 15:57:17 -0800 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-01-21 11:22:11 -0800 |
commit | 1c21d0fd4cd30cbf6c5b863fd0179b227c28bc0b (patch) | |
tree | dfb6b788285d2b28f7060138ae28734ece13942e /src/mbgl/storage | |
parent | c33ed50c98c57ce2f2cf3b971bcf72c4208bf120 (diff) | |
download | qtlocation-mapboxgl-1c21d0fd4cd30cbf6c5b863fd0179b227c28bc0b.tar.gz |
[core] Use better types for modified / expires / etag
Diffstat (limited to 'src/mbgl/storage')
-rw-r--r-- | src/mbgl/storage/http_request_base.cpp | 18 | ||||
-rw-r--r-- | src/mbgl/storage/http_request_base.hpp | 3 |
2 files changed, 13 insertions, 8 deletions
diff --git a/src/mbgl/storage/http_request_base.cpp b/src/mbgl/storage/http_request_base.cpp index 8a4a81b291..81be716ff2 100644 --- a/src/mbgl/storage/http_request_base.cpp +++ b/src/mbgl/storage/http_request_base.cpp @@ -5,15 +5,19 @@ namespace mbgl { -Seconds HTTPRequestBase::parseCacheControl(const char *value) { - if (value) { - const auto cacheControl = http::CacheControl::parse(value); - if (cacheControl.maxAge) { - return toSeconds(SystemClock::now()) + Seconds(*cacheControl.maxAge); - } +optional<SystemTimePoint> HTTPRequestBase::parseCacheControl(const char *value) { + if (!value) { + return {}; } - return Seconds::zero(); + const auto cacheControl = http::CacheControl::parse(value); + if (!cacheControl.maxAge) { + return {}; + } + + // Round trip through time_t to truncate fractional seconds. + return SystemClock::from_time_t(SystemClock::to_time_t( + SystemClock::now() + std::chrono::seconds(*cacheControl.maxAge))); } } // namespace mbgl diff --git a/src/mbgl/storage/http_request_base.hpp b/src/mbgl/storage/http_request_base.hpp index 8f1caf7bdc..1a8cf73da6 100644 --- a/src/mbgl/storage/http_request_base.hpp +++ b/src/mbgl/storage/http_request_base.hpp @@ -3,6 +3,7 @@ #include <mbgl/util/noncopyable.hpp> #include <mbgl/util/chrono.hpp> +#include <mbgl/util/optional.hpp> #include <memory> #include <functional> @@ -27,7 +28,7 @@ public: virtual void cancel() { cancelled = true; }; protected: - static Seconds parseCacheControl(const char *value); + static optional<SystemTimePoint> parseCacheControl(const char *value); std::string url; Callback notify; |