Skip to content

Commit

Permalink
[catalog] sending downloaded guides ids on start of catalog is added
Browse files Browse the repository at this point in the history
  • Loading branch information
Arsentiy Milchakov authored and darina committed May 19, 2020
1 parent 43564cb commit f01eacf
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 0 deletions.
5 changes: 5 additions & 0 deletions map/bookmark_catalog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,11 @@ bool BookmarkCatalog::HasDownloaded(std::string const & id) const
return m_registeredInCatalog.find(id) != m_registeredInCatalog.cend();
}

std::set<std::string> const & BookmarkCatalog::GetDownloadedIds() const
{
return m_registeredInCatalog;
}

void BookmarkCatalog::Download(std::string const & id, std::string const & accessToken,
DownloadStartCallback && startHandler,
DownloadFinishCallback && finishHandler)
Expand Down
1 change: 1 addition & 0 deletions map/bookmark_catalog.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ class BookmarkCatalog

bool IsDownloading(std::string const & id) const;
bool HasDownloaded(std::string const & id) const;
std::set<std::string> const & GetDownloadedIds() const;
size_t GetDownloadingCount() const { return m_downloadingIds.size(); }

std::string GetDownloadUrl(std::string const & serverId) const;
Expand Down
15 changes: 15 additions & 0 deletions map/catalog_headers_provider.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#include "map/catalog_headers_provider.hpp"

#include "map/bookmark_catalog.hpp"

#include <set>

CatalogHeadersProvider::CatalogHeadersProvider(PositionProvider const & positionProvider,
Expand All @@ -9,6 +11,13 @@ CatalogHeadersProvider::CatalogHeadersProvider(PositionProvider const & position
{
}

void CatalogHeadersProvider::SetBookmarkCatalog(BookmarkCatalog const * bookmarkCatalog)
{
ASSERT(bookmarkCatalog != nullptr, ());

m_bookmarkCatalog = bookmarkCatalog;
}

platform::HttpClient::Headers CatalogHeadersProvider::GetHeaders()
{
web_api::HeadersParams params;
Expand All @@ -30,6 +39,12 @@ platform::HttpClient::Headers CatalogHeadersProvider::GetHeaders()
}
params.m_countryGeoIds.assign(countries.cbegin(), countries.cend());

if (m_bookmarkCatalog != nullptr && !m_bookmarkCatalog->GetDownloadedIds().empty())
{
auto const & ids = m_bookmarkCatalog->GetDownloadedIds();
params.m_downloadedGuidesIds.assign(ids.cbegin(), ids.cend());
}

return web_api::GetCatalogHeaders(params);
}

Expand Down
5 changes: 5 additions & 0 deletions map/catalog_headers_provider.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,21 @@

#include <optional>

class BookmarkCatalog;

class CatalogHeadersProvider
{
public:
CatalogHeadersProvider(PositionProvider const & positionProvider,
storage::Storage const & storage);

void SetBookmarkCatalog(BookmarkCatalog const * bookmarkCatalog);

platform::HttpClient::Headers GetHeaders();
std::optional<platform::HttpClient::Header> GetPositionHeader();

private:
PositionProvider const & m_positionProvider;
storage::Storage const & m_storage;
BookmarkCatalog const * m_bookmarkCatalog = nullptr;
};
1 change: 1 addition & 0 deletions map/framework.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -468,6 +468,7 @@ Framework::Framework(FrameworkParams const & params)

m_bmManager->InitRegionAddressGetter(m_featuresFetcher.GetDataSource(), *m_infoGetter);

catalogHeadersProvider->SetBookmarkCatalog(&m_bmManager->GetCatalog());
m_parsedMapApi.SetBookmarkManager(m_bmManager.get());
m_routingManager.SetBookmarkManager(m_bmManager.get());
m_guidesManager.SetBookmarkManager(m_bmManager.get());
Expand Down
4 changes: 4 additions & 0 deletions web_api/request_headers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ char const * const kUserAgentHeader = "User-Agent";
char const * const kCitiesHeader = "X-Mapsme-City-Ids";
char const * const kCountriesHeader = "X-Mapsme-Country-Ids";
char const * const kLatLonHeader = "X-Mapsme-Lat-Lon";
char const * const kGuidesHeader = "X-Mapsme-Downloaded-Guides";
} // namespace

platform::HttpClient::Headers GetDefaultCatalogHeaders()
Expand Down Expand Up @@ -64,6 +65,9 @@ platform::HttpClient::Headers GetCatalogHeaders(HeadersParams const & params)
if (!params.m_countryGeoIds.empty())
result.emplace(kCountriesHeader, strings::JoinAny(params.m_countryGeoIds));

if (!params.m_downloadedGuidesIds.empty())
result.emplace(kGuidesHeader, strings::JoinAny(params.m_downloadedGuidesIds));

return result;
}
} // namespace web_api
1 change: 1 addition & 0 deletions web_api/request_headers.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ class HeadersParams
std::optional<m2::PointD> m_currentPosition;
std::vector<base::GeoObjectId> m_countryGeoIds;
std::vector<base::GeoObjectId> m_cityGeoIds;
std::vector<std::string> m_downloadedGuidesIds;
};

platform::HttpClient::Headers GetDefaultCatalogHeaders();
Expand Down

0 comments on commit f01eacf

Please sign in to comment.