diff --git a/platform/default/online_file_source.cpp b/platform/default/online_file_source.cpp index 871bd36d4..c482d6d96 100644 --- a/platform/default/online_file_source.cpp +++ b/platform/default/online_file_source.cpp @@ -14,21 +14,13 @@ #include #include #include - -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wshadow" -#pragma GCC diagnostic ignored "-Wunknown-pragmas" -#pragma GCC diagnostic ignored "-Wunused-local-typedefs" -#include -#pragma GCC diagnostic pop +#include #include #include #include #include -namespace algo = boost::algorithm; - namespace mbgl { class RequestBase; @@ -299,7 +291,7 @@ void OnlineFileSource::Impl::startRealRequest(OnlineFileRequestImpl& request) { reschedule(request); }; - if (algo::starts_with(request.resource.url, "asset://")) { + if (util::isAssetURL(request.resource.url)) { request.realRequest = assetContext->createRequest(request.resource.url, callback, assetRoot); } else { diff --git a/src/mbgl/map/map_context.cpp b/src/mbgl/map/map_context.cpp index f2c17824c..be6d32d2a 100644 --- a/src/mbgl/map/map_context.cpp +++ b/src/mbgl/map/map_context.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include @@ -114,7 +115,8 @@ void MapContext::setStyleURL(const std::string& url) { styleRequest = nullptr; if (res.error) { - if (res.error->reason == Response::Error::Reason::NotFound && styleURL.find("mapbox://") == 0) { + if (res.error->reason == Response::Error::Reason::NotFound && + util::mapbox::isMapboxURL(styleURL)) { Log::Error(Event::Setup, "style %s could not be found or is an incompatible legacy map or style", styleURL.c_str()); } else { Log::Error(Event::Setup, "loading style failed: %s", res.error->message.c_str()); diff --git a/src/mbgl/util/mapbox.cpp b/src/mbgl/util/mapbox.cpp index 079860746..7bcfa7322 100644 --- a/src/mbgl/util/mapbox.cpp +++ b/src/mbgl/util/mapbox.cpp @@ -13,7 +13,7 @@ const std::string protocol = "mapbox://"; const std::string baseURL = "https://api.mapbox.com/"; bool isMapboxURL(const std::string& url) { - return url.compare(0, protocol.length(), protocol) == 0; + return std::equal(protocol.begin(), protocol.end(), url.begin()); } std::vector getMapboxURLPathname(const std::string& url) { diff --git a/src/mbgl/util/mapbox.hpp b/src/mbgl/util/mapbox.hpp index 29ee45489..64f34d72a 100644 --- a/src/mbgl/util/mapbox.hpp +++ b/src/mbgl/util/mapbox.hpp @@ -8,6 +8,8 @@ namespace mbgl { namespace util { namespace mapbox { +bool isMapboxURL(const std::string& url); + std::string normalizeSourceURL(const std::string& url, const std::string& accessToken); std::string normalizeStyleURL(const std::string& url, const std::string& accessToken); std::string normalizeSpriteURL(const std::string& url, const std::string& accessToken); diff --git a/src/mbgl/util/url.cpp b/src/mbgl/util/url.cpp index bf6fc70ff..07a226414 100644 --- a/src/mbgl/util/url.cpp +++ b/src/mbgl/util/url.cpp @@ -47,5 +47,13 @@ std::string percentDecode(const std::string& input) { return decoded; } +namespace { +const std::string assetProtocol = "asset://"; +} + +bool isAssetURL(const std::string& url) { + return std::equal(assetProtocol.begin(), assetProtocol.end(), url.begin()); +} + } // namespace util } // namespace mbgl diff --git a/src/mbgl/util/url.hpp b/src/mbgl/util/url.hpp index 6257a171c..583e04c30 100644 --- a/src/mbgl/util/url.hpp +++ b/src/mbgl/util/url.hpp @@ -9,6 +9,8 @@ namespace util { std::string percentEncode(const std::string&); std::string percentDecode(const std::string&); +bool isAssetURL(const std::string&); + } // namespace util } // namespace mbgl