1#ifndef CPR_ACCEPT_ENCODING_H
2#define CPR_ACCEPT_ENCODING_H
3
4#include <curl/curlver.h>
5#include <initializer_list>
6#include <map>
7#include <string>
8#include <unordered_set>
9
10namespace cpr {
11
12enum class AcceptEncodingMethods {
13 identity,
14 deflate,
15 zlib,
16 gzip,
17 disabled,
18};
19
20// NOLINTNEXTLINE(cert-err58-cpp)
21static const std::map<AcceptEncodingMethods, std::string> AcceptEncodingMethodsStringMap{{AcceptEncodingMethods::identity, "identity"}, {AcceptEncodingMethods::deflate, "deflate"}, {AcceptEncodingMethods::zlib, "zlib"}, {AcceptEncodingMethods::gzip, "gzip"}, {AcceptEncodingMethods::disabled, "disabled"}};
22
23class AcceptEncoding {
24 public:
25 AcceptEncoding() = default;
26 // NOLINTNEXTLINE(google-explicit-constructor)
27 AcceptEncoding(const std::initializer_list<AcceptEncodingMethods>& methods);
28 // NOLINTNEXTLINE(google-explicit-constructor)
29 AcceptEncoding(const std::initializer_list<std::string>& methods);
30
31 [[nodiscard]] bool empty() const noexcept;
32 [[nodiscard]] const std::string getString() const;
33 [[nodiscard]] bool disabled() const;
34
35 private:
36 std::unordered_set<std::string> methods_;
37};
38
39} // namespace cpr
40
41#endif
42