diff options
author | arcadia-devtools <arcadia-devtools@yandex-team.ru> | 2022-02-17 12:04:09 +0300 |
---|---|---|
committer | arcadia-devtools <arcadia-devtools@yandex-team.ru> | 2022-02-17 12:04:09 +0300 |
commit | 2c8e314f8fff8633fe2cf026badfbf6180845ae0 (patch) | |
tree | c3b650d13934ec1315e3660d60fd2275f09b03a7 /library/cpp/http/misc/httpreqdata.h | |
parent | a49ae9d891c35087b242c854f69880fd9fecbddd (diff) | |
download | ydb-2c8e314f8fff8633fe2cf026badfbf6180845ae0.tar.gz |
intermediate changes
ref:d5f945ecdc1f5af1ad57e12787c6b8ed1a9f0f12
Diffstat (limited to 'library/cpp/http/misc/httpreqdata.h')
-rw-r--r-- | library/cpp/http/misc/httpreqdata.h | 81 |
1 files changed, 39 insertions, 42 deletions
diff --git a/library/cpp/http/misc/httpreqdata.h b/library/cpp/http/misc/httpreqdata.h index 16e59c4d78..b5c9e446a9 100644 --- a/library/cpp/http/misc/httpreqdata.h +++ b/library/cpp/http/misc/httpreqdata.h @@ -13,52 +13,52 @@ #include <util/system/yassert.h> #include <util/generic/string.h> #include <util/datetime/base.h> -#include <util/generic/buffer.h> +#include <util/generic/vector.h> +#include <util/generic/maybe.h> using THttpHeadersContainer = THashMap<TString, TString, TCIOps, TCIOps>; class TBaseServerRequestData { public: TBaseServerRequestData(SOCKET s = INVALID_SOCKET); - TBaseServerRequestData(const char* qs, SOCKET s = INVALID_SOCKET); + TBaseServerRequestData(TStringBuf qs, SOCKET s = INVALID_SOCKET); void SetHost(const TString& host, ui16 port) { - Host = host; - Port = ToString(port); + Host_ = host; + Port_ = ToString(port); } const TString& ServerName() const { - return Host; + return Host_; } NAddr::IRemoteAddrPtr ServerAddress() const { - return NAddr::GetSockAddr(Socket); + return NAddr::GetSockAddr(Socket_); } const TString& ServerPort() const { - return Port; + return Port_; } - const char* ScriptName() const { - return Path; + TStringBuf ScriptName() const { + return Path_; } - const char* QueryString() const { - return Search; + TStringBuf Query() const { + return Query_; } - TStringBuf QueryStringBuf() const { - return TStringBuf(Search, SearchLength); + TStringBuf OrigQuery() const { + return OrigQuery_; } - TStringBuf OrigQueryStringBuf() const { - return OrigSearch; - } - - void AppendQueryString(const char* str, size_t length); - const char* RemoteAddr() const; + void AppendQueryString(TStringBuf str); + TStringBuf RemoteAddr() const; void SetRemoteAddr(TStringBuf addr); - const char* HeaderIn(TStringBuf key) const; + // Returns nullptr when the header does not exist + const TString* HeaderIn(TStringBuf key) const; + // Throws on missing header + TStringBuf HeaderInOrEmpty(TStringBuf key) const; const THttpHeadersContainer& HeadersIn() const { return HeadersIn_; @@ -69,39 +69,36 @@ public: } TString HeaderByIndex(size_t n) const noexcept; - const char* Environment(const char* key) const; + TStringBuf Environment(TStringBuf key) const; void Clear(); void SetSocket(SOCKET s) noexcept { - Socket = s; + Socket_ = s; } ui64 RequestBeginTime() const noexcept { - return BeginTime; + return BeginTime_; } - void SetPath(const TString& path); - const char* GetCurPage() const; - bool Parse(const char* req); + void SetPath(TString path); + const TString& GetCurPage() const; + bool Parse(TStringBuf req); void AddHeader(const TString& name, const TString& value); private: - TBuffer PathStorage; - mutable char* Addr; - TString Host; - TString Port; - char* Path; - char* Search; - size_t SearchLength; // length of Search - TStringBuf OrigSearch; + mutable TMaybe<TString> Addr_; + TString Host_; + TString Port_; + TString Path_; + TStringBuf Query_; + TStringBuf OrigQuery_; THttpHeadersContainer HeadersIn_; - mutable char AddrData[INET6_ADDRSTRLEN]; - SOCKET Socket; - ui64 BeginTime; - mutable TString CurPage; - TBuffer ParseBuf; - TBuffer ModifiedQueryString; + SOCKET Socket_; + ui64 BeginTime_; + mutable TString CurPage_; + TVector<char> ParseBuf_; + TString ModifiedQueryString_; }; class TServerRequestData: public TBaseServerRequestData { @@ -110,14 +107,14 @@ public: : TBaseServerRequestData(s) { } - TServerRequestData(const char* qs, SOCKET s = INVALID_SOCKET) + TServerRequestData(TStringBuf qs, SOCKET s = INVALID_SOCKET) : TBaseServerRequestData(qs, s) { Scan(); } void Scan() { - CgiParam.Scan(QueryStringBuf()); + CgiParam.Scan(Query()); } public: |