summaryrefslogtreecommitdiff
path: root/src/mbgl/storage
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-01-19 15:57:17 -0800
committerJohn Firebaugh <john.firebaugh@gmail.com>2016-01-21 11:22:11 -0800
commit1c21d0fd4cd30cbf6c5b863fd0179b227c28bc0b (patch)
treedfb6b788285d2b28f7060138ae28734ece13942e /src/mbgl/storage
parentc33ed50c98c57ce2f2cf3b971bcf72c4208bf120 (diff)
downloadqtlocation-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.cpp18
-rw-r--r--src/mbgl/storage/http_request_base.hpp3
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;