http_response.h revision b2df76ea8fec9e32f6f3718986dba0d95315b29c
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
11#include "base/basictypes.h"
12
13namespace net {
14namespace test_server {
15
16enum ResponseCode {
17  SUCCESS = 200,
18  CREATED = 201,
19  NO_CONTENT = 204,
20  MOVED = 301,
21  RESUME_INCOMPLETE = 308,
22  NOT_FOUND = 404,
23  PRECONDITION = 412,
24  ACCESS_DENIED = 500,
25};
26
27// Respresents a HTTP response. Since it can be big, it may be better to use
28// scoped_ptr to pass it instead of copying.
29class HttpResponse {
30 public:
31  HttpResponse();
32  ~HttpResponse();
33
34  // The response code.
35  ResponseCode code() const { return code_; }
36  void set_code(ResponseCode code) { code_ = code; }
37
38  // The content of the response.
39  const std::string& content() const { return content_; }
40  void set_content(const std::string& content) { content_ = content; }
41
42  // The content type.
43  const std::string& content_type() const { return content_type_; }
44  void set_content_type(const std::string& content_type) {
45    content_type_ = content_type;
46  }
47
48  // The custom headers to be sent to the client.
49  const std::map<std::string, std::string>& custom_headers() const {
50    return custom_headers_;
51  }
52
53  // Adds a custom header.
54  void AddCustomHeader(const std::string& key, const std::string& value) {
55    custom_headers_[key] = value;
56  }
57
58  // Generates and returns a http response string.
59  std::string ToResponseString() const;
60
61 private:
62  ResponseCode code_;
63  std::string content_;
64  std::string content_type_;
65  std::map<std::string, std::string> custom_headers_;
66};
67
68}  // namespace test_server
69}  // namespace net
70
71#endif  // NET_TEST_EMBEDDED_TEST_SERVER_HTTP_RESPONSE_H_
72