summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2014-12-04 17:03:23 -0800
committerJohn Firebaugh <john.firebaugh@gmail.com>2014-12-04 17:03:23 -0800
commitff640132de0fe855314a8fd86adae3a2fb33237b (patch)
treef3a794ad1a68ad91626a48727cdde0146152316d
parent0a942b6f143373c30fdd2027ff75fdb3b0c71551 (diff)
downloadqtlocation-mapboxgl-ff640132de0fe855314a8fd86adae3a2fb33237b.tar.gz
Move setAccessToken to CachingHTTPFileSource
-rw-r--r--include/mbgl/map/map.hpp3
-rw-r--r--include/mbgl/storage/caching_http_file_source.hpp11
-rw-r--r--include/mbgl/storage/file_source.hpp2
m---------ios/mapbox-gl-cocoa0
-rw-r--r--linux/main.cpp2
-rw-r--r--macosx/main.mm5
-rw-r--r--src/mbgl/map/map.cpp12
-rw-r--r--src/mbgl/map/source.cpp3
-rw-r--r--src/mbgl/storage/caching_http_file_source.cpp46
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);