75 lines
2.3 KiB
C++
75 lines
2.3 KiB
C++
|
// Copyright (c) 2010 The Chromium Embedded Framework 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 "cefclient/string_util.h"
|
||
|
#include <sstream>
|
||
|
#include <string>
|
||
|
#include "include/cef_request.h"
|
||
|
|
||
|
void DumpRequestContents(CefRefPtr<CefRequest> request, std::string& str) {
|
||
|
std::stringstream ss;
|
||
|
|
||
|
ss << "URL: " << std::string(request->GetURL());
|
||
|
ss << "\nMethod: " << std::string(request->GetMethod());
|
||
|
|
||
|
CefRequest::HeaderMap headerMap;
|
||
|
request->GetHeaderMap(headerMap);
|
||
|
if (headerMap.size() > 0) {
|
||
|
ss << "\nHeaders:";
|
||
|
CefRequest::HeaderMap::const_iterator it = headerMap.begin();
|
||
|
for (; it != headerMap.end(); ++it) {
|
||
|
ss << "\n\t" << std::string((*it).first) << ": " <<
|
||
|
std::string((*it).second);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
CefRefPtr<CefPostData> postData = request->GetPostData();
|
||
|
if (postData.get()) {
|
||
|
CefPostData::ElementVector elements;
|
||
|
postData->GetElements(elements);
|
||
|
if (elements.size() > 0) {
|
||
|
ss << "\nPost Data:";
|
||
|
CefRefPtr<CefPostDataElement> element;
|
||
|
CefPostData::ElementVector::const_iterator it = elements.begin();
|
||
|
for (; it != elements.end(); ++it) {
|
||
|
element = (*it);
|
||
|
if (element->GetType() == PDE_TYPE_BYTES) {
|
||
|
// the element is composed of bytes
|
||
|
ss << "\n\tBytes: ";
|
||
|
if (element->GetBytesCount() == 0) {
|
||
|
ss << "(empty)";
|
||
|
} else {
|
||
|
// retrieve the data.
|
||
|
size_t size = element->GetBytesCount();
|
||
|
char* bytes = new char[size];
|
||
|
element->GetBytes(size, bytes);
|
||
|
ss << std::string(bytes, size);
|
||
|
delete [] bytes;
|
||
|
}
|
||
|
} else if (element->GetType() == PDE_TYPE_FILE) {
|
||
|
ss << "\n\tFile: " << std::string(element->GetFile());
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
str = ss.str();
|
||
|
}
|
||
|
|
||
|
std::string StringReplace(const std::string& str, const std::string& from,
|
||
|
const std::string& to) {
|
||
|
std::string result = str;
|
||
|
std::string::size_type pos = 0;
|
||
|
std::string::size_type from_len = from.length();
|
||
|
std::string::size_type to_len = to.length();
|
||
|
do {
|
||
|
pos = result.find(from, pos);
|
||
|
if (pos != std::string::npos) {
|
||
|
result.replace(pos, from_len, to);
|
||
|
pos += to_len;
|
||
|
}
|
||
|
} while (pos != std::string::npos);
|
||
|
return result;
|
||
|
}
|