1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/payments/core/error_message_util.h"
#include <algorithm>
#include <optional>
#include <vector>
#include "base/check.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "components/payments/core/error_strings.h"
#include "components/payments/core/native_error_strings.h"
#include "net/http/http_status_code.h"
#include "url/gurl.h"
namespace payments {
namespace {
template <class Collection>
std::string concatNamesWithQuotesAndCommma(const Collection& names) {
std::vector<std::string> with_quotes(names.size());
std::ranges::transform(
names, with_quotes.begin(),
[](const std::string& method_name) { return "\"" + method_name + "\""; });
std::string result = base::JoinString(with_quotes, ", ");
return result;
}
} // namespace
std::string GetNotSupportedErrorMessage(const std::set<std::string>& methods) {
if (methods.empty())
return errors::kGenericPaymentMethodNotSupportedMessage;
std::string output;
bool replaced = base::ReplaceChars(
methods.size() == 1 ? errors::kSinglePaymentMethodNotSupportedFormat
: errors::kMultiplePaymentMethodsNotSupportedFormat,
"$", concatNamesWithQuotesAndCommma(methods), &output);
DCHECK(replaced);
return output;
}
std::string GetAppsSkippedForPartialDelegationErrorMessage(
const std::vector<std::string>& skipped_app_names) {
std::string output;
bool replaced = base::ReplaceChars(
errors::kSkipAppForPartialDelegation, "$",
concatNamesWithQuotesAndCommma(skipped_app_names), &output);
DCHECK(replaced);
return output;
}
std::string GenerateHttpStatusCodeError(const GURL& url,
int http_response_code) {
std::optional<net::HttpStatusCode> http_status_code =
net::TryToGetHttpStatusCode(http_response_code);
const char* http_reason_phrase =
http_status_code.has_value()
? net::TryToGetHttpReasonPhrase(http_status_code.value())
: nullptr;
return base::ReplaceStringPlaceholders(
errors::kPaymentManifestDownloadFailedWithHttpStatusCode,
{url.spec(), base::NumberToString(http_response_code),
http_reason_phrase != nullptr ? http_reason_phrase : "Unknown"},
nullptr);
}
} // namespace payments
|