#include <queue>
#include <string>
#include <unordered_map>
#include "base/check.h"
#include "base/feature_list.h"
#include "base/functional/callback.h"
#include "base/json/json_reader.h"
#include "base/json/json_writer.h"
#include "base/json/values_util.h"
#include "base/time/time.h"
#include "components/commerce/core/commerce_constants.h"
#include "components/commerce/core/commerce_feature_list.h"
#include "components/commerce/core/subscriptions/commerce_subscription.h"
#include "components/commerce/core/subscriptions/subscriptions_server_proxy.h"
#include "components/endpoint_fetcher/endpoint_fetcher.h"
#include "components/signin/public/base/consent_level.h"
#include "components/signin/public/identity_manager/identity_manager.h"
#include "components/sync/base/features.h"
#include "net/http/http_status_code.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
namespace {
const int kDefaultTimeoutMs = …;
const char kTimeoutParam[] = …;
constexpr base::FeatureParam<int> kTimeoutMs{ … };
const char kDefaultServiceBaseUrl[] = …;
const char kBaseUrlParam[] = …;
constexpr base::FeatureParam<std::string> kServiceBaseUrl{ … };
const char kGetQueryParams[] = …;
const char kManageQueryParams[] = …;
const char kPriceTrackGetParam[] = …;
const char kSubscriptionsKey[] = …;
const char kCreateRequestParamsKey[] = …;
const char kEventTimestampsKey[] = …;
const char kDeleteRequestParamsKey[] = …;
const char kStatusKey[] = …;
const char kStatusCodeKey[] = …;
const int kBackendCanonicalCodeSuccess = …;
const char kSubscriptionTypeKey[] = …;
const char kSubscriptionIdTypeKey[] = …;
const char kSubscriptionIdKey[] = …;
const char kSubscriptionManagementTypeKey[] = …;
const char kSubscriptionTimestampKey[] = …;
const char kSubscriptionSeenOfferKey[] = …;
const char kSeenOfferIdKey[] = …;
const char kSeenOfferPriceKey[] = …;
const char kSeenOfferCountryKey[] = …;
const char kSeenOfferLocaleKey[] = …;
}
namespace commerce {
SubscriptionsServerProxy::SubscriptionsServerProxy(
signin::IdentityManager* identity_manager,
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory)
: … { … }
SubscriptionsServerProxy::~SubscriptionsServerProxy() = default;
void SubscriptionsServerProxy::Create(
std::unique_ptr<std::vector<CommerceSubscription>> subscriptions,
ManageSubscriptionsFetcherCallback callback) { … }
void SubscriptionsServerProxy::Delete(
std::unique_ptr<std::vector<CommerceSubscription>> subscriptions,
ManageSubscriptionsFetcherCallback callback) { … }
void SubscriptionsServerProxy::Get(SubscriptionType type,
GetSubscriptionsFetcherCallback callback) { … }
std::unique_ptr<EndpointFetcher>
SubscriptionsServerProxy::CreateEndpointFetcher(
const GURL& url,
const std::string& http_method,
const std::string& post_data,
const net::NetworkTrafficAnnotationTag& annotation_tag) { … }
void SubscriptionsServerProxy::HandleManageSubscriptionsResponses(
ManageSubscriptionsFetcherCallback callback,
std::unique_ptr<EndpointFetcher> endpoint_fetcher,
std::unique_ptr<EndpointResponse> responses) { … }
void SubscriptionsServerProxy::OnManageSubscriptionsJsonParsed(
ManageSubscriptionsFetcherCallback callback,
data_decoder::DataDecoder::ValueOrError result) { … }
void SubscriptionsServerProxy::HandleGetSubscriptionsResponses(
GetSubscriptionsFetcherCallback callback,
std::unique_ptr<EndpointFetcher> endpoint_fetcher,
std::unique_ptr<EndpointResponse> responses) { … }
void SubscriptionsServerProxy::OnGetSubscriptionsJsonParsed(
GetSubscriptionsFetcherCallback callback,
data_decoder::DataDecoder::ValueOrError result) { … }
std::unique_ptr<std::vector<CommerceSubscription>>
SubscriptionsServerProxy::GetSubscriptionsFromParsedJson(
const data_decoder::DataDecoder::ValueOrError& result) { … }
bool SubscriptionsServerProxy::IsPriceTrackingLocaleKeyEnabled() { … }
base::Value::Dict SubscriptionsServerProxy::Serialize(
const CommerceSubscription& subscription) { … }
std::optional<CommerceSubscription> SubscriptionsServerProxy::Deserialize(
const base::Value& value) { … }
}