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.
5 #ifndef NET_TEST_EMBEDDED_TEST_SERVER_HTTP_RESPONSE_H_
6 #define NET_TEST_EMBEDDED_TEST_SERVER_HTTP_RESPONSE_H_
11 #include "base/basictypes.h"
12 #include "base/compiler_specific.h"
13 #include "base/strings/string_split.h"
14 #include "net/http/http_status_code.h"
17 namespace test_server
{
19 // Interface for HTTP response implementations.
22 virtual ~HttpResponse();
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;
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
{
35 ~BasicHttpResponse() override
;
38 HttpStatusCode
code() const { return code_
; }
39 void set_code(HttpStatusCode code
) { code_
= code
; }
41 // The content of the response.
42 const std::string
& content() const { return content_
; }
43 void set_content(const std::string
& content
) { content_
= content
; }
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
;
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
));
56 // Generates and returns a http response string.
57 std::string
ToResponseString() const override
;
62 std::string content_type_
;
63 base::StringPairs custom_headers_
;
65 DISALLOW_COPY_AND_ASSIGN(BasicHttpResponse
);
68 } // namespace test_server
71 #endif // NET_TEST_EMBEDDED_TEST_SERVER_HTTP_RESPONSE_H_