xref: /aosp_15_r20/external/libbrillo/brillo/http/http_transport.cc (revision 1a96fba65179ea7d3f56207137718607415c5953)
1*1a96fba6SXin Li // Copyright 2014 The Chromium OS Authors. All rights reserved.
2*1a96fba6SXin Li // Use of this source code is governed by a BSD-style license that can be
3*1a96fba6SXin Li // found in the LICENSE file.
4*1a96fba6SXin Li 
5*1a96fba6SXin Li #include <brillo/http/http_transport.h>
6*1a96fba6SXin Li 
7*1a96fba6SXin Li #include <brillo/http/http_transport_curl.h>
8*1a96fba6SXin Li 
9*1a96fba6SXin Li namespace brillo {
10*1a96fba6SXin Li namespace http {
11*1a96fba6SXin Li 
12*1a96fba6SXin Li const char kErrorDomain[] = "http_transport";
13*1a96fba6SXin Li const char kDirectProxy[] = "direct://";
14*1a96fba6SXin Li 
CreateDefault()15*1a96fba6SXin Li std::shared_ptr<Transport> Transport::CreateDefault() {
16*1a96fba6SXin Li   return std::make_shared<http::curl::Transport>(std::make_shared<CurlApi>());
17*1a96fba6SXin Li }
18*1a96fba6SXin Li 
CreateDefaultWithProxy(const std::string & proxy)19*1a96fba6SXin Li std::shared_ptr<Transport> Transport::CreateDefaultWithProxy(
20*1a96fba6SXin Li     const std::string& proxy) {
21*1a96fba6SXin Li   if (proxy.empty() || proxy == kDirectProxy) {
22*1a96fba6SXin Li     return CreateDefault();
23*1a96fba6SXin Li   } else {
24*1a96fba6SXin Li     return std::make_shared<http::curl::Transport>(std::make_shared<CurlApi>(),
25*1a96fba6SXin Li                                                    proxy);
26*1a96fba6SXin Li   }
27*1a96fba6SXin Li }
28*1a96fba6SXin Li 
CertificateToPath(Transport::Certificate cert)29*1a96fba6SXin Li base::FilePath Transport::CertificateToPath(Transport::Certificate cert) {
30*1a96fba6SXin Li   const char* str;
31*1a96fba6SXin Li   switch (cert) {
32*1a96fba6SXin Li     case Certificate::kDefault:
33*1a96fba6SXin Li       str =
34*1a96fba6SXin Li #ifdef __ANDROID__
35*1a96fba6SXin Li         "/system/etc/security/cacerts_google";
36*1a96fba6SXin Li #else
37*1a96fba6SXin Li         "/usr/share/chromeos-ca-certificates";
38*1a96fba6SXin Li #endif
39*1a96fba6SXin Li       break;
40*1a96fba6SXin Li     case Certificate::kHermesProd:
41*1a96fba6SXin Li       str = "/usr/share/hermes-ca-certificates/prod";
42*1a96fba6SXin Li       break;
43*1a96fba6SXin Li     case Certificate::kHermesTest:
44*1a96fba6SXin Li       str = "/usr/share/hermes-ca-certificates/test";
45*1a96fba6SXin Li       break;
46*1a96fba6SXin Li     case Certificate::kNss:
47*1a96fba6SXin Li       str = "/etc/ssl/certs";
48*1a96fba6SXin Li       break;
49*1a96fba6SXin Li     default:
50*1a96fba6SXin Li       CHECK(false) << "Invalid certificate";
51*1a96fba6SXin Li       break;
52*1a96fba6SXin Li   }
53*1a96fba6SXin Li   return base::FilePath(str);
54*1a96fba6SXin Li }
55*1a96fba6SXin Li 
56*1a96fba6SXin Li }  // namespace http
57*1a96fba6SXin Li }  // namespace brillo
58