| // Copyright 2013 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef NET_SERVER_HTTP_SERVER_RESPONSE_INFO_H_ | 
 | #define NET_SERVER_HTTP_SERVER_RESPONSE_INFO_H_ | 
 |  | 
 | #include <stddef.h> | 
 |  | 
 | #include <string> | 
 | #include <utility> | 
 |  | 
 | #include "base/strings/string_split.h" | 
 | #include "net/http/http_status_code.h" | 
 |  | 
 | namespace net { | 
 |  | 
 | class HttpServerResponseInfo { | 
 |  public: | 
 |   // Creates a 200 OK HttpServerResponseInfo. | 
 |   HttpServerResponseInfo(); | 
 |   explicit HttpServerResponseInfo(HttpStatusCode status_code); | 
 |   HttpServerResponseInfo(const HttpServerResponseInfo& other); | 
 |   ~HttpServerResponseInfo(); | 
 |  | 
 |   static HttpServerResponseInfo CreateFor404(); | 
 |   static HttpServerResponseInfo CreateFor500(const std::string& body); | 
 |  | 
 |   void AddHeader(const std::string& name, const std::string& value); | 
 |  | 
 |   // This also adds an appropriate Content-Length header. | 
 |   void SetBody(const std::string& body, const std::string& content_type); | 
 |   // Sets content-length and content-type. Body should be sent separately. | 
 |   void SetContentHeaders(size_t content_length, | 
 |                          const std::string& content_type); | 
 |  | 
 |   std::string Serialize() const; | 
 |  | 
 |   HttpStatusCode status_code() const; | 
 |   const std::string& body() const; | 
 |  | 
 |  private: | 
 |   using Headers = base::StringPairs; | 
 |  | 
 |   HttpStatusCode status_code_; | 
 |   Headers headers_; | 
 |   std::string body_; | 
 | }; | 
 |  | 
 | }  // namespace net | 
 |  | 
 | #endif  // NET_SERVER_HTTP_SERVER_RESPONSE_INFO_H_ |