C++ Client-Side SDK
LaunchDarkly SDK
http_properties.hpp
1 #pragma once
2 
3 #include <chrono>
4 #include <map>
5 #include <optional>
6 #include <string>
7 #include <vector>
8 
9 namespace launchdarkly::config::shared::built {
10 
11 class TlsOptions final {
12  public:
13  enum class VerifyMode { kVerifyPeer, kVerifyNone };
14  explicit TlsOptions(VerifyMode verify_mode);
15  TlsOptions(VerifyMode verify_mode,
16  std::optional<std::string> ca_bundle_path);
17  TlsOptions();
18  [[nodiscard]] VerifyMode PeerVerifyMode() const;
19  [[nodiscard]] std::optional<std::string> const& CustomCAFile() const;
20 
21  private:
22  VerifyMode verify_mode_;
23  std::optional<std::string> ca_bundle_path_;
24 };
25 
39 class ProxyOptions final {
40  public:
53  explicit ProxyOptions(std::optional<std::string> url);
54 
58  ProxyOptions();
59 
64  [[nodiscard]] std::optional<std::string> const& Url() const;
65 
66  private:
67  std::optional<std::string> url_;
68 };
69 
70 class HttpProperties final {
71  public:
72  HttpProperties(std::chrono::milliseconds connect_timeout,
73  std::chrono::milliseconds read_timeout,
74  std::chrono::milliseconds write_timeout,
75  std::chrono::milliseconds response_timeout,
76  std::map<std::string, std::string> base_headers,
77  TlsOptions tls,
78  ProxyOptions proxy);
79 
80  [[nodiscard]] std::chrono::milliseconds ConnectTimeout() const;
81  [[nodiscard]] std::chrono::milliseconds ReadTimeout() const;
82  [[nodiscard]] std::chrono::milliseconds WriteTimeout() const;
83 
84  [[nodiscard]] std::chrono::milliseconds ResponseTimeout() const;
85  [[nodiscard]] std::map<std::string, std::string> const& BaseHeaders() const;
86 
87  [[nodiscard]] TlsOptions const& Tls() const;
88 
89  [[nodiscard]] ProxyOptions const& Proxy() const;
90 
91  private:
92  std::chrono::milliseconds connect_timeout_;
93  std::chrono::milliseconds read_timeout_;
94  std::chrono::milliseconds write_timeout_;
95  std::chrono::milliseconds response_timeout_;
96  std::map<std::string, std::string> base_headers_;
97  TlsOptions tls_;
98  ProxyOptions proxy_;
99 };
100 
101 bool operator==(HttpProperties const& lhs, HttpProperties const& rhs);
102 bool operator==(TlsOptions const& lhs, TlsOptions const& rhs);
103 bool operator==(ProxyOptions const& lhs, ProxyOptions const& rhs);
104 
105 } // namespace launchdarkly::config::shared::built
Definition: http_properties.hpp:70
Definition: http_properties.hpp:39
ProxyOptions()
Definition: http_properties.cpp:37
std::optional< std::string > const & Url() const
Definition: http_properties.cpp:39
Definition: http_properties.hpp:11