| Index: net/server/http_server_response_info.cc
|
| diff --git a/net/server/http_server_response_info.cc b/net/server/http_server_response_info.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9e0e8c59ee2a8888660438801504a55416965006
|
| --- /dev/null
|
| +++ b/net/server/http_server_response_info.cc
|
| @@ -0,0 +1,67 @@
|
| +// Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "net/server/http_server_response_info.h"
|
| +
|
| +#include "base/format_macros.h"
|
| +#include "base/strings/stringprintf.h"
|
| +#include "net/http/http_request_headers.h"
|
| +
|
| +namespace net {
|
| +
|
| +HttpServerResponseInfo::HttpServerResponseInfo() : status_code_(HTTP_OK) {}
|
| +
|
| +HttpServerResponseInfo::HttpServerResponseInfo(HttpStatusCode status_code)
|
| + : status_code_(status_code) {}
|
| +
|
| +HttpServerResponseInfo::~HttpServerResponseInfo() {}
|
| +
|
| +// static
|
| +HttpServerResponseInfo HttpServerResponseInfo::CreateFor404() {
|
| + HttpServerResponseInfo response(HTTP_NOT_FOUND);
|
| + response.SetBody(std::string(), "text/html");
|
| + return response;
|
| +}
|
| +
|
| +// static
|
| +HttpServerResponseInfo HttpServerResponseInfo::CreateFor500(
|
| + const std::string& body) {
|
| + HttpServerResponseInfo response(HTTP_INTERNAL_SERVER_ERROR);
|
| + response.SetBody(body, "text/html");
|
| + return response;
|
| +}
|
| +
|
| +void HttpServerResponseInfo::AddHeader(const std::string& name,
|
| + const std::string& value) {
|
| + headers_.push_back(std::make_pair(name, value));
|
| +}
|
| +
|
| +void HttpServerResponseInfo::SetBody(const std::string& body,
|
| + const std::string& content_type) {
|
| + DCHECK(body_.empty());
|
| + body_ = body;
|
| + AddHeader(HttpRequestHeaders::kContentLength,
|
| + base::StringPrintf("%" PRIuS, body.length()));
|
| + AddHeader(HttpRequestHeaders::kContentType, content_type);
|
| +}
|
| +
|
| +std::string HttpServerResponseInfo::Serialize() const {
|
| + std::string response = base::StringPrintf(
|
| + "HTTP/1.1 %d %s\r\n", status_code_, GetHttpReasonPhrase(status_code_));
|
| + Headers::const_iterator header;
|
| + for (header = headers_.begin(); header != headers_.end(); ++header)
|
| + response += header->first + ":" + header->second + "\r\n";
|
| +
|
| + return response + "\r\n" + body_;
|
| +}
|
| +
|
| +HttpStatusCode HttpServerResponseInfo::status_code() const {
|
| + return status_code_;
|
| +}
|
| +
|
| +const std::string& HttpServerResponseInfo::body() const {
|
| + return body_;
|
| +}
|
| +
|
| +} // namespace net
|
|
|