Audacity 3.2.0
HeadersList.h
Go to the documentation of this file.
1/*!********************************************************************
2
3 Audacity: A Digital Audio Editor
4
5 @file HeadersList.h
6 @brief Declare HTTP headers list class.
7
8 Dmitry Vedenko
9 **********************************************************************/
10
11#pragma once
12
13#include <string>
14#include <vector>
15
16#include "NetworkManagerApi.h"
17
18namespace audacity
19{
20namespace network_manager
21{
22
23namespace common_headers
24{
25extern NETWORK_MANAGER_API const std::string Accept;
26extern NETWORK_MANAGER_API const std::string AcceptEncoding;
27extern NETWORK_MANAGER_API const std::string AcceptLanguage;
28extern NETWORK_MANAGER_API const std::string Authorization;
29extern NETWORK_MANAGER_API const std::string CacheControl;
30extern NETWORK_MANAGER_API const std::string Connection;
31extern NETWORK_MANAGER_API const std::string ContentLength;
32extern NETWORK_MANAGER_API const std::string ContentType;
33extern NETWORK_MANAGER_API const std::string ContentDisposition;
34extern NETWORK_MANAGER_API const std::string Cookie;
35extern NETWORK_MANAGER_API const std::string Host;
36extern NETWORK_MANAGER_API const std::string Origin;
37extern NETWORK_MANAGER_API const std::string Referer;
38extern NETWORK_MANAGER_API const std::string UserAgent;
39extern NETWORK_MANAGER_API const std::string IfNoneMatch;
40extern NETWORK_MANAGER_API const std::string IfModifiedSince;
41} // namespace common_headers
42
43namespace common_content_types
44{
45extern NETWORK_MANAGER_API const std::string ApplicationJson;
46extern NETWORK_MANAGER_API const std::string ApplicationXml;
48extern NETWORK_MANAGER_API const std::string ApplicationXOctetStream;
49extern NETWORK_MANAGER_API const std::string ApplicationXGzip;
50} // namespace common_content_types
52{
53 std::string Name;
54 std::string Value;
55
56 bool hasSameName (const Header& header) const;
57 bool hasSameName (const std::string& name) const;
58
59 static Header Parse (const std::string& header);
60};
61
63{
64 using HeadersStorageType = std::vector<Header>;
65public:
66 using HeadersIterator = HeadersStorageType::iterator;
67 using HeadersConstIterator = HeadersStorageType::const_iterator;
68
69 void setHeader (const Header& header);
70 void setHeader (const std::string& headerName, std::string headerValue);
71
72 void addHeader (Header header);
73 void addHeader (std::string headerName, std::string headerValue);
74
75 bool hasHeader (const std::string& headerName) const noexcept;
76
77 std::string getHeaderValue (const std::string& headerName) const;
78
79 const Header* getHeader (size_t idx) const noexcept;
80 const Header* getHeader (const std::string& name) const noexcept;
81
82 size_t getHeadersCount () const noexcept;
83
84 HeadersIterator begin () noexcept;
85 HeadersIterator end () noexcept;
86
87 HeadersConstIterator begin () const noexcept;
88 HeadersConstIterator end () const noexcept;
89private:
90 Header* getHeader (size_t idx) noexcept;
91 Header* getHeader (const std::string& headerName) noexcept;
92
94};
95
96}
97}
const TranslatableString name
Definition: Distortion.cpp:76
Declare macros for the Network Manager library DLL API.
#define NETWORK_MANAGER_API
std::vector< Header > HeadersStorageType
Definition: HeadersList.h:64
HeadersStorageType::iterator HeadersIterator
Definition: HeadersList.h:66
HeadersStorageType::const_iterator HeadersConstIterator
Definition: HeadersList.h:67
auto end(const Ptr< Type, BaseDeleter > &p)
Enables range-for.
Definition: PackedArray.h:159
auto begin(const Ptr< Type, BaseDeleter > &p)
Enables range-for.
Definition: PackedArray.h:150
STL namespace.