aboutsummaryrefslogtreecommitdiffstats
path: root/brillo/http/http_proxy.h
blob: c142af2dd017cb84530c3755aedcc934d932cf01 (plain)
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
// Copyright 2017 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef LIBBRILLO_BRILLO_HTTP_HTTP_PROXY_H_
#define LIBBRILLO_BRILLO_HTTP_HTTP_PROXY_H_

#include <string>
#include <vector>

#include <base/callback_forward.h>
#include <base/memory/ref_counted.h>
#include <brillo/brillo_export.h>

namespace dbus {
class Bus;
}  // namespace dbus

namespace brillo {
namespace http {

using GetChromeProxyServersCallback =
    base::Callback<void(bool success, const std::vector<std::string>& proxies)>;

// Gets the list of proxy servers that are configured in Chrome by sending a
// D-Bus message to Chrome. The list will always be at least one in size, with
// the last element always being the direct option. The target URL should be
// passed in for the |url| parameter. The proxy servers are set in
// |proxies_out|. The format of the strings in |proxies_out| is
// scheme://[[user:pass@]host:port] with the last element being "direct://".
// Valid schemes it will return are socks4, socks5, http, https or direct.
// Even if this function returns false, it will still set |proxies_out| to be
// just the direct proxy. This function will only return false if there is an
// error in the D-Bus communication itself.
BRILLO_EXPORT bool GetChromeProxyServers(scoped_refptr<dbus::Bus> bus,
                                         const std::string& url,
                                         std::vector<std::string>* proxies_out);

// Async version of GetChromeProxyServers.
BRILLO_EXPORT void GetChromeProxyServersAsync(
    scoped_refptr<dbus::Bus> bus,
    const std::string& url,
    const GetChromeProxyServersCallback& callback);

}  // namespace http
}  // namespace brillo

#endif  // LIBBRILLO_BRILLO_HTTP_HTTP_PROXY_H_