diff options
author | Anton Samokhvalov <pg83@yandex.ru> | 2022-02-10 16:45:17 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:45:17 +0300 |
commit | d3a398281c6fd1d3672036cb2d63f842d2cb28c5 (patch) | |
tree | dd4bd3ca0f36b817e96812825ffaf10d645803f2 /library/cpp/http/io/headers.h | |
parent | 72cb13b4aff9bc9cf22e49251bc8fd143f82538f (diff) | |
download | ydb-d3a398281c6fd1d3672036cb2d63f842d2cb28c5.tar.gz |
Restoring authorship annotation for Anton Samokhvalov <pg83@yandex.ru>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/http/io/headers.h')
-rw-r--r-- | library/cpp/http/io/headers.h | 126 |
1 files changed, 63 insertions, 63 deletions
diff --git a/library/cpp/http/io/headers.h b/library/cpp/http/io/headers.h index a6e130eaa0..a71793d1c6 100644 --- a/library/cpp/http/io/headers.h +++ b/library/cpp/http/io/headers.h @@ -1,99 +1,99 @@ #pragma once - + #include <util/generic/string.h> -#include <util/generic/strbuf.h> +#include <util/generic/strbuf.h> #include <util/generic/deque.h> #include <util/generic/vector.h> #include <util/string/cast.h> - + class IInputStream; class IOutputStream; - + /// @addtogroup Streams_HTTP /// @{ /// Объект, содержащий информацию о HTTP-заголовке. class THttpInputHeader { -public: - /// @param[in] header - строка вида 'параметр: значение'. +public: + /// @param[in] header - строка вида 'параметр: значение'. THttpInputHeader(TStringBuf header); - /// @param[in] name - имя параметра. - /// @param[in] value - значение параметра. + /// @param[in] name - имя параметра. + /// @param[in] value - значение параметра. THttpInputHeader(TString name, TString value); - - /// Возвращает имя параметра. + + /// Возвращает имя параметра. inline const TString& Name() const noexcept { - return Name_; - } - - /// Возвращает значение параметра. + return Name_; + } + + /// Возвращает значение параметра. inline const TString& Value() const noexcept { - return Value_; - } - - /// Записывает заголовок вида "имя параметра: значение\r\n" в поток. + return Value_; + } + + /// Записывает заголовок вида "имя параметра: значение\r\n" в поток. void OutTo(IOutputStream* stream) const; - - /// Возвращает строку "имя параметра: значение". + + /// Возвращает строку "имя параметра: значение". inline TString ToString() const { return Name_ + TStringBuf(": ") + Value_; - } - -private: + } + +private: TString Name_; TString Value_; -}; - +}; + /// Контейнер для хранения HTTP-заголовков -class THttpHeaders { +class THttpHeaders { using THeaders = TDeque<THttpInputHeader>; - -public: + +public: using TConstIterator = THeaders::const_iterator; - + THttpHeaders() = default; - /// Добавляет каждую строку из потока в контейнер, считая ее правильным заголовком. + /// Добавляет каждую строку из потока в контейнер, считая ее правильным заголовком. THttpHeaders(IInputStream* stream); - - /// Стандартный итератор. + + /// Стандартный итератор. inline TConstIterator Begin() const noexcept { - return Headers_.begin(); - } + return Headers_.begin(); + } inline TConstIterator begin() const noexcept { return Headers_.begin(); } - - /// Стандартный итератор. + + /// Стандартный итератор. inline TConstIterator End() const noexcept { - return Headers_.end(); - } + return Headers_.end(); + } inline TConstIterator end() const noexcept { return Headers_.end(); } - - /// Возвращает количество заголовков в контейнере. + + /// Возвращает количество заголовков в контейнере. inline size_t Count() const noexcept { - return Headers_.size(); - } - - /// Проверяет, содержит ли контейнер хотя бы один заголовок. + return Headers_.size(); + } + + /// Проверяет, содержит ли контейнер хотя бы один заголовок. inline bool Empty() const noexcept { - return Headers_.empty(); - } + return Headers_.empty(); + } - /// Добавляет заголовок в контейнер. + /// Добавляет заголовок в контейнер. void AddHeader(THttpInputHeader header); - + template <typename ValueType> void AddHeader(TString name, const ValueType& value) { AddHeader(THttpInputHeader(std::move(name), ToString(value))); } - /// Добавляет заголовок в контейнер, если тот не содержит заголовка - /// c таким же параметром. В противном случае, заменяет существующий - /// заголовок на новый. - void AddOrReplaceHeader(const THttpInputHeader& header); - + /// Добавляет заголовок в контейнер, если тот не содержит заголовка + /// c таким же параметром. В противном случае, заменяет существующий + /// заголовок на новый. + void AddOrReplaceHeader(const THttpInputHeader& header); + template <typename ValueType> void AddOrReplaceHeader(TString name, const ValueType& value) { AddOrReplaceHeader(THttpInputHeader(std::move(name), ToString(value))); @@ -109,17 +109,17 @@ public: /// Возвращает nullptr, если не нашел const THttpInputHeader* FindHeader(TStringBuf header) const; - /// Записывает все заголовки контейнера в поток. - /// @details Каждый заголовк записывается в виде "имя параметра: значение\r\n". + /// Записывает все заголовки контейнера в поток. + /// @details Каждый заголовк записывается в виде "имя параметра: значение\r\n". void OutTo(IOutputStream* stream) const; - /// Обменивает наборы заголовков двух контейнеров. + /// Обменивает наборы заголовков двух контейнеров. void Swap(THttpHeaders& headers) noexcept { - Headers_.swap(headers.Headers_); - } - -private: - THeaders Headers_; -}; - + Headers_.swap(headers.Headers_); + } + +private: + THeaders Headers_; +}; + /// @} |