Home | History | Annotate | Download | only in embedded_test_server
      1 // Copyright (c) 2012 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_TEST_EMBEDDED_TEST_SERVER_HTTP_RESPONSE_H_
      6 #define NET_TEST_EMBEDDED_TEST_SERVER_HTTP_RESPONSE_H_
      7 
      8 #include <map>
      9 #include <string>
     10 #include <vector>
     11 
     12 #include "base/basictypes.h"
     13 #include "base/compiler_specific.h"
     14 #include "net/http/http_status_code.h"
     15 
     16 namespace net {
     17 namespace test_server {
     18 
     19 // Interface for HTTP response implementations.
     20 class HttpResponse{
     21  public:
     22   virtual ~HttpResponse();
     23 
     24   // Returns raw contents to be written to the network socket
     25   // in response. If you intend to make this a valid HTTP response,
     26   // it should start with "HTTP/x.x" line, followed by response headers.
     27   virtual std::string ToResponseString() const = 0;
     28 };
     29 
     30 // This class is used to handle basic HTTP responses with commonly used
     31 // response headers such as "Content-Type".
     32 class BasicHttpResponse : public HttpResponse {
     33  public:
     34   BasicHttpResponse();
     35   virtual ~BasicHttpResponse();
     36 
     37   // The response code.
     38   HttpStatusCode code() const { return code_; }
     39   void set_code(HttpStatusCode code) { code_ = code; }
     40 
     41   // The content of the response.
     42   const std::string& content() const { return content_; }
     43   void set_content(const std::string& content) { content_ = content; }
     44 
     45   // The content type.
     46   const std::string& content_type() const { return content_type_; }
     47   void set_content_type(const std::string& content_type) {
     48     content_type_ = content_type;
     49   }
     50 
     51   // Adds a custom header.
     52   void AddCustomHeader(const std::string& key, const std::string& value) {
     53     custom_headers_.push_back(std::make_pair(key, value));
     54   }
     55 
     56   // Generates and returns a http response string.
     57   virtual std::string ToResponseString() const OVERRIDE;
     58 
     59  private:
     60   HttpStatusCode code_;
     61   std::string content_;
     62   std::string content_type_;
     63   std::vector<std::pair<std::string, std::string> > custom_headers_;
     64 
     65   DISALLOW_COPY_AND_ASSIGN(BasicHttpResponse);
     66 };
     67 
     68 }  // namespace test_server
     69 }  // namespace net
     70 
     71 #endif  // NET_TEST_EMBEDDED_TEST_SERVER_HTTP_RESPONSE_H_
     72