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