diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2014-12-04 17:03:23 -0800 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2014-12-04 17:03:23 -0800 |
commit | ff640132de0fe855314a8fd86adae3a2fb33237b (patch) | |
tree | f3a794ad1a68ad91626a48727cdde0146152316d | |
parent | 0a942b6f143373c30fdd2027ff75fdb3b0c71551 (diff) | |
download | qtlocation-mapboxgl-ff640132de0fe855314a8fd86adae3a2fb33237b.tar.gz |
Move setAccessToken to CachingHTTPFileSource
-rw-r--r-- | include/mbgl/map/map.hpp | 3 | ||||
-rw-r--r-- | include/mbgl/storage/caching_http_file_source.hpp | 11 | ||||
-rw-r--r-- | include/mbgl/storage/file_source.hpp | 2 | ||||
m--------- | ios/mapbox-gl-cocoa | 0 | ||||
-rw-r--r-- | linux/main.cpp | 2 | ||||
-rw-r--r-- | macosx/main.mm | 5 | ||||
-rw-r--r-- | src/mbgl/map/map.cpp | 12 | ||||
-rw-r--r-- | src/mbgl/map/source.cpp | 3 | ||||
-rw-r--r-- | src/mbgl/storage/caching_http_file_source.cpp | 46 |
9 files changed, 41 insertions, 43 deletions
diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp index 23bd211af9..45ec16ffd5 100644 --- a/include/mbgl/map/map.hpp +++ b/include/mbgl/map/map.hpp @@ -78,8 +78,6 @@ public: void setStyleURL(const std::string &url); void setStyleJSON(std::string newStyleJSON, const std::string &base = ""); std::string getStyleJSON() const; - void setAccessToken(std::string accessToken); - std::string getAccessToken() const; // Transition void cancelTransitions(); @@ -187,7 +185,6 @@ private: std::string styleURL; std::string styleJSON = ""; - std::string accessToken = ""; bool debug = false; timestamp animationTime = 0; diff --git a/include/mbgl/storage/caching_http_file_source.hpp b/include/mbgl/storage/caching_http_file_source.hpp index f566acf49e..6d7d852d2a 100644 --- a/include/mbgl/storage/caching_http_file_source.hpp +++ b/include/mbgl/storage/caching_http_file_source.hpp @@ -23,9 +23,11 @@ public: bool hasLoop(); void clearLoop(); - // Stores and retrieves the base path/URL for relative requests - void setBase(const std::string &value); - const std::string &getBase() const; + // Set the base path/URL for relative requests + void setBase(std::string); + + // Set the Mapbox API access token + void setAccessToken(std::string); std::unique_ptr<Request> request(ResourceType type, const std::string &url); @@ -37,6 +39,9 @@ public: private: std::thread::id thread_id; + // Mapbox API access token. + std::string accessToken; + // Path to the cache database. std::string path; diff --git a/include/mbgl/storage/file_source.hpp b/include/mbgl/storage/file_source.hpp index 69a0060f6a..23a1462ae8 100644 --- a/include/mbgl/storage/file_source.hpp +++ b/include/mbgl/storage/file_source.hpp @@ -21,7 +21,7 @@ public: virtual bool hasLoop() = 0; virtual void clearLoop() = 0; - virtual void setBase(const std::string &value) = 0; + virtual void setBase(std::string) = 0; virtual std::unique_ptr<Request> request(ResourceType type, const std::string &url) = 0; virtual void prepare(std::function<void()> fn) = 0; }; diff --git a/ios/mapbox-gl-cocoa b/ios/mapbox-gl-cocoa -Subproject cf7436759fb39a9a28ce13aa1ba897d2c884103 +Subproject 1533d3288f5678d13bc550b43fb7dbb6ecdfa29 diff --git a/linux/main.cpp b/linux/main.cpp index d6994fd017..42a98d0198 100644 --- a/linux/main.cpp +++ b/linux/main.cpp @@ -78,7 +78,7 @@ int main(int argc, char *argv[]) { if (token == nullptr) { mbgl::Log::Warning(mbgl::Event::Setup, "no access token set. mapbox.com tiles won't work."); } else { - map.setAccessToken(std::string(token)); + fileSource.setAccessToken(std::string(token)); } // Load style diff --git a/macosx/main.mm b/macosx/main.mm index ca1a212551..228b05f0b4 100644 --- a/macosx/main.mm +++ b/macosx/main.mm @@ -96,11 +96,10 @@ int main() { map.setBearing(settings.bearing); map.setDebug(settings.debug); - // Set access token if present NSString *accessToken = [[NSProcessInfo processInfo] environment][@"MAPBOX_ACCESS_TOKEN"]; - if ( ! accessToken) mbgl::Log::Warning(mbgl::Event::Setup, "No access token set. Mapbox vector tiles won't work."); - if (accessToken) map.setAccessToken([accessToken cStringUsingEncoding:[NSString defaultCStringEncoding]]); + if (!accessToken) mbgl::Log::Warning(mbgl::Event::Setup, "No access token set. Mapbox vector tiles won't work."); + if (accessToken) fileSource.setAccessToken([accessToken cStringUsingEncoding:[NSString defaultCStringEncoding]]); // Load style const std::string path([[[NSBundle mainBundle] pathForResource:@"bright-v6" ofType:@"json" inDirectory:@"styles/"] UTF8String]); diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index 8897ac0a93..539fd8ef08 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -12,7 +12,6 @@ #include <mbgl/util/constants.hpp> #include <mbgl/util/uv_detail.hpp> #include <mbgl/util/std.hpp> -#include <mbgl/util/mapbox.hpp> #include <mbgl/style/style.hpp> #include <mbgl/text/glyph_store.hpp> #include <mbgl/geometry/glyph_atlas.hpp> @@ -313,7 +312,7 @@ void Map::setStyleJSON(std::string newStyleJSON, const std::string &base) { } style->loadJSON((const uint8_t *)styleJSON.c_str()); fileSource.setBase(base); - glyphStore->setURL(util::mapbox::normalizeGlyphsURL(style->glyph_url, getAccessToken())); + glyphStore->setURL(style->glyph_url); update(); } @@ -321,15 +320,6 @@ std::string Map::getStyleJSON() const { return styleJSON; } -void Map::setAccessToken(std::string accessToken_) { - // TODO: Make threadsafe. - accessToken.swap(accessToken_); -} - -std::string Map::getAccessToken() const { - return accessToken; -} - util::ptr<Sprite> Map::getSprite() { const float pixelRatio = state.getPixelRatio(); const std::string &sprite_url = style->getSpriteURL(); diff --git a/src/mbgl/map/source.cpp b/src/mbgl/map/source.cpp index 8e67ffb86c..798cd41d1d 100644 --- a/src/mbgl/map/source.cpp +++ b/src/mbgl/map/source.cpp @@ -37,10 +37,9 @@ void Source::load(Map& map, FileSource& fileSource) { return; } - std::string url = util::mapbox::normalizeSourceURL(info.url, map.getAccessToken()); util::ptr<Source> source = shared_from_this(); - fileSource.request(ResourceType::JSON, url)->onload([source, &map](const Response &res) { + fileSource.request(ResourceType::JSON, info.url)->onload([source, &map](const Response &res) { if (res.code != 200) { Log::Warning(Event::General, "failed to load source TileJSON"); return; diff --git a/src/mbgl/storage/caching_http_file_source.cpp b/src/mbgl/storage/caching_http_file_source.cpp index 7d3598d968..d676357f8d 100644 --- a/src/mbgl/storage/caching_http_file_source.cpp +++ b/src/mbgl/storage/caching_http_file_source.cpp @@ -3,6 +3,7 @@ #include <mbgl/storage/http_request.hpp> #include <mbgl/storage/sqlite_store.hpp> #include <mbgl/util/uv-messenger.h> +#include <mbgl/util/mapbox.hpp> #include <mbgl/util/std.hpp> #include <uv.h> @@ -52,44 +53,51 @@ void CachingHTTPFileSource::clearLoop() { store.reset(); } -void CachingHTTPFileSource::setBase(const std::string &value) { - base = value; +void CachingHTTPFileSource::setBase(std::string value) { + // TODO: Make threadsafe. + base.swap(value); } -const std::string &CachingHTTPFileSource::getBase() const { - return base; +void CachingHTTPFileSource::setAccessToken(std::string value) { + // TODO: Make threadsafe. + accessToken.swap(value); } -std::unique_ptr<Request> CachingHTTPFileSource::request(ResourceType type, const std::string &url) { +std::unique_ptr<Request> CachingHTTPFileSource::request(ResourceType type, const std::string& url_) { assert(thread_id == std::this_thread::get_id()); + std::string url = url_; + // Make URL absolute. - const std::string absoluteURL = [&]() -> std::string { - const size_t separator = url.find("://"); - if (separator == std::string::npos) { - // Relative URL. - return base + url; - } else { - return url; - } - }(); + const size_t separator = url.find("://"); + if (separator == std::string::npos) { + url = base + url; + } + + // Normalize mapbox:// URLs. + switch (type) { + case ResourceType::Glyphs: + url = util::mapbox::normalizeGlyphsURL(url, accessToken); + default: + url = util::mapbox::normalizeSourceURL(url, accessToken); + } util::ptr<BaseRequest> req; // First, try to find an existing Request object. - auto it = pending.find(absoluteURL); + auto it = pending.find(url); if (it != pending.end()) { req = it->second.lock(); } if (!req) { - if (absoluteURL.substr(0, 7) == "file://") { - req = std::make_shared<FileRequest>(absoluteURL.substr(7), loop); + if (url.substr(0, 7) == "file://") { + req = std::make_shared<FileRequest>(url.substr(7), loop); } else { - req = std::make_shared<HTTPRequest>(type, absoluteURL, loop, store); + req = std::make_shared<HTTPRequest>(type, url, loop, store); } - pending.emplace(absoluteURL, req); + pending.emplace(url, req); } return util::make_unique<Request>(req); |