Home | History | Annotate | Download | only in server
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef NET_SERVER_HTTP_SERVER_RESPONSE_INFO_H_
      6 #define NET_SERVER_HTTP_SERVER_RESPONSE_INFO_H_
      7 
      8 #include <string>
      9 #include <utility>
     10 #include <vector>
     11 
     12 #include "net/http/http_status_code.h"
     13 
     14 namespace net {
     15 
     16 class HttpServerResponseInfo {
     17  public:
     18   // Creates a 200 OK HttpServerResponseInfo.
     19   HttpServerResponseInfo();
     20   explicit HttpServerResponseInfo(HttpStatusCode status_code);
     21   ~HttpServerResponseInfo();
     22 
     23   static HttpServerResponseInfo CreateFor404();
     24   static HttpServerResponseInfo CreateFor500(const std::string& body);
     25 
     26   void AddHeader(const std::string& name, const std::string& value);
     27 
     28   // This also adds an appropriate Content-Length header.
     29   void SetBody(const std::string& body, const std::string& content_type);
     30 
     31   std::string Serialize() const;
     32 
     33   HttpStatusCode status_code() const;
     34   const std::string& body() const;
     35 
     36  private:
     37   typedef std::vector<std::pair<std::string, std::string> > Headers;
     38 
     39   HttpStatusCode status_code_;
     40   Headers headers_;
     41   std::string body_;
     42 };
     43 
     44 }  // namespace net
     45 
     46 #endif  // NET_SERVER_HTTP_SERVER_RESPONSE_INFO_H_
     47