From 58d5238d1506e234491440e86d6ffcea5cf345ed Mon Sep 17 00:00:00 2001 From: Arsentiy Milchakov Date: Wed, 19 Oct 2016 14:16:49 +0300 Subject: [PATCH] generate opentable URL by using sponsored id --- configure.sh | 1 + generator/opentable_dataset.cpp | 1 - map/framework.cpp | 11 +++++++--- partners_api/booking_api.cpp | 2 +- partners_api/booking_api.hpp | 2 +- partners_api/opentable_api.cpp | 21 +++++++++++++++++++ partners_api/opentable_api.hpp | 12 +++++++++++ partners_api/partners_api.pro | 2 ++ .../partners_api_tests/booking_tests.cpp | 2 +- 9 files changed, 47 insertions(+), 7 deletions(-) create mode 100644 partners_api/opentable_api.cpp create mode 100644 partners_api/opentable_api.hpp diff --git a/configure.sh b/configure.sh index c764b0e5eb..973f91a1dd 100755 --- a/configure.sh +++ b/configure.sh @@ -52,6 +52,7 @@ else #define BOOKING_SECRET "" #define UBER_SERVER_TOKEN "" #define UBER_CLIENT_ID "" +#define OPENTABLE_AFFILATE_ID "" #define TRACKING_REALTIME_HOST "" #define TRACKING_REALTIME_PORT 0 #define TRACKING_HISTORICAL_HOST "" diff --git a/generator/opentable_dataset.cpp b/generator/opentable_dataset.cpp index 7892444bb0..499a2ef833 100644 --- a/generator/opentable_dataset.cpp +++ b/generator/opentable_dataset.cpp @@ -55,7 +55,6 @@ void OpentableDataset::PreprocessMatchedOsmObject(ObjectId const matchedObjId, F auto restaurant = GetObjectById(matchedObjId); auto & metadata = params.GetMetadata(); metadata.Set(feature::Metadata::FMD_SPONSORED_ID, strings::to_string(restaurant.m_id.Get())); - metadata.Set(feature::Metadata::FMD_WEBSITE, restaurant.m_descUrl); // params.AddAddress(restaurant.address); // TODO(mgsergio): addr:full ??? diff --git a/map/framework.cpp b/map/framework.cpp index 2429def14d..42f82a8551 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -74,6 +74,8 @@ #include "geometry/rect2d.hpp" #include "geometry/triangle2d.hpp" +#include "partners_api/opentable_api.hpp" + #include "base/logging.hpp" #include "base/math.hpp" #include "base/scope_guard.hpp" @@ -792,14 +794,17 @@ void Framework::FillInfoFromFeatureType(FeatureType const & ft, place_page::Info if (ftypes::IsBookingChecker::Instance()(ft)) { info.m_sponsoredType = SponsoredType::Booking; - string const & baseUrl = info.GetMetadata().Get(feature::Metadata::FMD_WEBSITE); - info.m_sponsoredUrl = GetBookingApi().GetBookingUrl(baseUrl); + auto const & baseUrl = info.GetMetadata().Get(feature::Metadata::FMD_WEBSITE); + info.m_sponsoredUrl = GetBookingApi().GetBookHotelUrl(baseUrl); info.m_sponsoredDescriptionUrl = GetBookingApi().GetDescriptionUrl(baseUrl); } else if (ftypes::IsOpentableChecker::Instance()(ft)) { info.m_sponsoredType = SponsoredType::Opentable; - info.m_sponsoredUrl = info.GetMetadata().Get(feature::Metadata::FMD_WEBSITE); + auto const & sponsoredId = info.GetMetadata().Get(feature::Metadata::FMD_SPONSORED_ID); + auto const & url = opentable::Api::GetBookTableUrl(sponsoredId); + info.m_sponsoredUrl = url; + info.m_sponsoredDescriptionUrl = url; } diff --git a/partners_api/booking_api.cpp b/partners_api/booking_api.cpp index 6bb2dc1a75..201f2cafbd 100644 --- a/partners_api/booking_api.cpp +++ b/partners_api/booking_api.cpp @@ -20,7 +20,7 @@ BookingApi::BookingApi() : m_affiliateId(BOOKING_AFFILIATE_ID), m_testingMode(fa m_apiUrl = "https://" + ss.str() + "@distribution-xml.booking.com/json/bookings."; } -string BookingApi::GetBookingUrl(string const & baseUrl, string const & /* lang */) const +string BookingApi::GetBookHotelUrl(string const & baseUrl, string const & /* lang */) const { return GetDescriptionUrl(baseUrl) + "#availability"; } diff --git a/partners_api/booking_api.hpp b/partners_api/booking_api.hpp index 4e92a8ca83..4804fefa7d 100644 --- a/partners_api/booking_api.hpp +++ b/partners_api/booking_api.hpp @@ -117,7 +117,7 @@ public: static constexpr const char kDefaultCurrency[1] = {0}; BookingApi(); - string GetBookingUrl(string const & baseUrl, string const & lang = string()) const; + string GetBookHotelUrl(string const & baseUrl, string const & lang = string()) const; string GetDescriptionUrl(string const & baseUrl, string const & lang = string()) const; inline void SetTestingMode(bool testing) { m_testingMode = testing; } diff --git a/partners_api/opentable_api.cpp b/partners_api/opentable_api.cpp new file mode 100644 index 0000000000..9454cef63b --- /dev/null +++ b/partners_api/opentable_api.cpp @@ -0,0 +1,21 @@ +#include "partners_api/opentable_api.hpp" + +#include "std/sstream.hpp" + +#include "private.h" + +namespace +{ + auto const kOpentableBaseUrl = "http://www.opentable.com/restaurant/profile/"; +} // namespace + +namespace opentable +{ +// static +string Api::GetBookTableUrl(string const & restaurantId) +{ + stringstream ss; + ss << kOpentableBaseUrl << restaurantId << "?ref=" << OPENTABLE_AFFILATE_ID; + return ss.str(); +} +} // namespace opentable diff --git a/partners_api/opentable_api.hpp b/partners_api/opentable_api.hpp new file mode 100644 index 0000000000..b298fafdd7 --- /dev/null +++ b/partners_api/opentable_api.hpp @@ -0,0 +1,12 @@ +#pragma once + +#include "std/string.hpp" + +namespace opentable +{ +class Api +{ +public: + static string GetBookTableUrl(string const & restaurantId); +}; +} // namespace opentable diff --git a/partners_api/partners_api.pro b/partners_api/partners_api.pro index e49f090dae..47cf571ac3 100644 --- a/partners_api/partners_api.pro +++ b/partners_api/partners_api.pro @@ -10,8 +10,10 @@ include($$ROOT_DIR/common.pri) SOURCES += \ booking_api.cpp \ + opentable_api.cpp \ uber_api.cpp \ HEADERS += \ booking_api.hpp \ + opentable_api.hpp \ uber_api.hpp \ diff --git a/partners_api/partners_api_tests/booking_tests.cpp b/partners_api/partners_api_tests/booking_tests.cpp index 05b28b25ae..86f3fcf54c 100644 --- a/partners_api/partners_api_tests/booking_tests.cpp +++ b/partners_api/partners_api_tests/booking_tests.cpp @@ -6,7 +6,7 @@ UNIT_TEST(Booking_SmokeTest) { BookingApi api; - string url = api.GetBookingUrl("http://someurl.com"); + string url = api.GetBookHotelUrl("http://someurl.com"); TEST(!url.empty(), ()); }