diff options
| author | ishfb <[email protected]> | 2022-02-10 16:48:07 +0300 | 
|---|---|---|
| committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:48:07 +0300 | 
| commit | 0170772a2dbf133f32e17ca137ff64790d43831f (patch) | |
| tree | 68ce3ab477bcb9e09abf2b0a6e7b34287c53f0df /library/cpp/http/server/response.cpp | |
| parent | df6128370874866447314ec18d8e67fc7bde40b4 (diff) | |
Restoring authorship annotation for <[email protected]>. Commit 1 of 2.
Diffstat (limited to 'library/cpp/http/server/response.cpp')
| -rw-r--r-- | library/cpp/http/server/response.cpp | 56 | 
1 files changed, 28 insertions, 28 deletions
| diff --git a/library/cpp/http/server/response.cpp b/library/cpp/http/server/response.cpp index 52d64c91cec..52d5f28e5b7 100644 --- a/library/cpp/http/server/response.cpp +++ b/library/cpp/http/server/response.cpp @@ -1,65 +1,65 @@ -#include "response.h" +#include "response.h"  -#include <util/stream/output.h> +#include <util/stream/output.h>   #include <util/stream/mem.h>  #include <util/string/cast.h> - -THttpResponse& THttpResponse::AddMultipleHeaders(const THttpHeaders& headers) { -    for (THttpHeaders::TConstIterator i = headers.Begin(); i != headers.End(); ++i) { -        this->Headers.AddHeader(*i); -    } -    return *this; -} - +  +THttpResponse& THttpResponse::AddMultipleHeaders(const THttpHeaders& headers) {  +    for (THttpHeaders::TConstIterator i = headers.Begin(); i != headers.End(); ++i) {  +        this->Headers.AddHeader(*i);  +    }  +    return *this;  +}  +   THttpResponse& THttpResponse::SetContentType(const TStringBuf& contentType) {      Headers.AddOrReplaceHeader(THttpInputHeader("Content-Type", ToString(contentType)));      return *this; -} - +}  +   void THttpResponse::OutTo(IOutputStream& os) const {      TVector<IOutputStream::TPart> parts; -    const size_t FIRST_LINE_PARTS = 3; +    const size_t FIRST_LINE_PARTS = 3;       const size_t HEADERS_PARTS = Headers.Count() * 4; -    const size_t CONTENT_PARTS = 5; -    parts.reserve(FIRST_LINE_PARTS + HEADERS_PARTS + CONTENT_PARTS); - -    // first line +    const size_t CONTENT_PARTS = 5;  +    parts.reserve(FIRST_LINE_PARTS + HEADERS_PARTS + CONTENT_PARTS);  +  +    // first line       parts.push_back(IOutputStream::TPart(TStringBuf("HTTP/1.1 ")));      parts.push_back(IOutputStream::TPart(HttpCodeStrEx(Code)));      parts.push_back(IOutputStream::TPart::CrLf()); - -    // headers +  +    // headers       for (THttpHeaders::TConstIterator i = Headers.Begin(); i != Headers.End(); ++i) {          parts.push_back(IOutputStream::TPart(i->Name()));          parts.push_back(IOutputStream::TPart(TStringBuf(": ")));          parts.push_back(IOutputStream::TPart(i->Value()));          parts.push_back(IOutputStream::TPart::CrLf()); -    } - +    }  +       char buf[50];      if (!Content.empty()) {          TMemoryOutput mo(buf, sizeof(buf)); - +           mo << Content.size();          parts.push_back(IOutputStream::TPart(TStringBuf("Content-Length: ")));          parts.push_back(IOutputStream::TPart(buf, mo.Buf() - buf));          parts.push_back(IOutputStream::TPart::CrLf()); -    } - -    // content +    }  +  +    // content       parts.push_back(IOutputStream::TPart::CrLf());      if (!Content.empty()) {          parts.push_back(IOutputStream::TPart(Content)); -    } - +    }  +       os.Write(parts.data(), parts.size());  }  template <>  void Out<THttpResponse>(IOutputStream& os, const THttpResponse& resp) {      resp.OutTo(os); -} +}  | 
