1 // Copyright (c) 2010 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/http/http_net_log_params.h"
6
7 #include "base/stringprintf.h"
8 #include "base/values.h"
9 #include "net/http/http_response_headers.h"
10
11 namespace net {
12
NetLogHttpRequestParameter(const std::string & line,const HttpRequestHeaders & headers)13 NetLogHttpRequestParameter::NetLogHttpRequestParameter(
14 const std::string& line,
15 const HttpRequestHeaders& headers)
16 : line_(line) {
17 headers_.CopyFrom(headers);
18 }
19
ToValue() const20 Value* NetLogHttpRequestParameter::ToValue() const {
21 DictionaryValue* dict = new DictionaryValue();
22 dict->SetString("line", line_);
23 ListValue* headers = new ListValue();
24 HttpRequestHeaders::Iterator iterator(headers_);
25 while (iterator.GetNext()) {
26 headers->Append(
27 new StringValue(base::StringPrintf("%s: %s",
28 iterator.name().c_str(),
29 iterator.value().c_str())));
30 }
31 dict->Set("headers", headers);
32 return dict;
33 }
34
~NetLogHttpRequestParameter()35 NetLogHttpRequestParameter::~NetLogHttpRequestParameter() {}
36
NetLogHttpResponseParameter(const scoped_refptr<HttpResponseHeaders> & headers)37 NetLogHttpResponseParameter::NetLogHttpResponseParameter(
38 const scoped_refptr<HttpResponseHeaders>& headers)
39 : headers_(headers) {}
40
ToValue() const41 Value* NetLogHttpResponseParameter::ToValue() const {
42 DictionaryValue* dict = new DictionaryValue();
43 ListValue* headers = new ListValue();
44 headers->Append(new StringValue(headers_->GetStatusLine()));
45 void* iterator = NULL;
46 std::string name;
47 std::string value;
48 while (headers_->EnumerateHeaderLines(&iterator, &name, &value)) {
49 headers->Append(
50 new StringValue(base::StringPrintf("%s: %s", name.c_str(),
51 value.c_str())));
52 }
53 dict->Set("headers", headers);
54 return dict;
55 }
56
~NetLogHttpResponseParameter()57 NetLogHttpResponseParameter::~NetLogHttpResponseParameter() {}
58
59 } // namespace net
60