OLD | NEW |
| (Empty) |
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 #include "net/server/http_server_response_info.h" | |
6 | |
7 #include "base/format_macros.h" | |
8 #include "base/strings/stringprintf.h" | |
9 #include "net/http/http_request_headers.h" | |
10 | |
11 namespace net { | |
12 | |
13 HttpServerResponseInfo::HttpServerResponseInfo() : status_code_(HTTP_OK) {} | |
14 | |
15 HttpServerResponseInfo::HttpServerResponseInfo(HttpStatusCode status_code) | |
16 : status_code_(status_code) {} | |
17 | |
18 HttpServerResponseInfo::~HttpServerResponseInfo() {} | |
19 | |
20 // static | |
21 HttpServerResponseInfo HttpServerResponseInfo::CreateFor404() { | |
22 HttpServerResponseInfo response(HTTP_NOT_FOUND); | |
23 response.SetBody(std::string(), "text/html"); | |
24 return response; | |
25 } | |
26 | |
27 // static | |
28 HttpServerResponseInfo HttpServerResponseInfo::CreateFor500( | |
29 const std::string& body) { | |
30 HttpServerResponseInfo response(HTTP_INTERNAL_SERVER_ERROR); | |
31 response.SetBody(body, "text/html"); | |
32 return response; | |
33 } | |
34 | |
35 void HttpServerResponseInfo::AddHeader(const std::string& name, | |
36 const std::string& value) { | |
37 headers_.push_back(std::make_pair(name, value)); | |
38 } | |
39 | |
40 void HttpServerResponseInfo::SetBody(const std::string& body, | |
41 const std::string& content_type) { | |
42 DCHECK(body_.empty()); | |
43 body_ = body; | |
44 SetContentHeaders(body.length(), content_type); | |
45 } | |
46 | |
47 void HttpServerResponseInfo::SetContentHeaders( | |
48 size_t content_length, | |
49 const std::string& content_type) { | |
50 AddHeader(HttpRequestHeaders::kContentLength, | |
51 base::StringPrintf("%" PRIuS, content_length)); | |
52 AddHeader(HttpRequestHeaders::kContentType, content_type); | |
53 } | |
54 | |
55 std::string HttpServerResponseInfo::Serialize() const { | |
56 std::string response = base::StringPrintf( | |
57 "HTTP/1.1 %d %s\r\n", status_code_, GetHttpReasonPhrase(status_code_)); | |
58 Headers::const_iterator header; | |
59 for (header = headers_.begin(); header != headers_.end(); ++header) | |
60 response += header->first + ":" + header->second + "\r\n"; | |
61 | |
62 return response + "\r\n" + body_; | |
63 } | |
64 | |
65 HttpStatusCode HttpServerResponseInfo::status_code() const { | |
66 return status_code_; | |
67 } | |
68 | |
69 const std::string& HttpServerResponseInfo::body() const { | |
70 return body_; | |
71 } | |
72 | |
73 } // namespace net | |
OLD | NEW |