本文整理汇总了C++中Response::GetMimeType方法的典型用法代码示例。如果您正苦于以下问题:C++ Response::GetMimeType方法的具体用法?C++ Response::GetMimeType怎么用?C++ Response::GetMimeType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Response
的用法示例。
在下文中一共展示了Response::GetMimeType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CefStreamResourceHandler
CefRefPtr<CefResourceHandler> RequestHandler::GetResourceHandler(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request) {
std::string url = request->GetURL().ToString();
std::string method = request->GetMethod().ToString();
int split_index = url.find_first_of('?');
std::string base_url;
std::string get_params;
if (split_index == -1) {
base_url = url;
} else {
base_url = url.substr(0, split_index);
get_params = url.substr(split_index + 1);
}
bool found = false;
Route *route = nullptr;
std::vector<Route *>::iterator route_iter = routes.begin();
while (route_iter != routes.end() && !found) {
route = (*route_iter);
std::smatch match;
if (std::regex_search(base_url, match, route->RouteRegex())) {
found = true;
}
++route_iter;
}
if (found) {
std::vector<std::pair<std::string, std::string> > get;
std::vector<std::string> get_param_chunks = split(get_params, '&');
std::vector<std::string>::iterator get_param_chunk_iter = get_param_chunks.begin();
while (get_param_chunk_iter != get_param_chunks.end()) {
std::string chunk = (*get_param_chunk_iter);
std::string name = chunk.substr(0, chunk.find_first_of('='));
std::string value = chunk.substr(chunk.find_first_of('='));
get.push_back(std::pair<std::string, std::string>(name, value));
++get_param_chunk_iter;
}
std::vector<std::pair<std::string, std::string> > post;
CefRefPtr<CefPostData> post_data = request->GetPostData();
if (post_data.get() != nullptr) {
CefPostData::ElementVector post_elements;
post_data->GetElements(post_elements);
CefPostData::ElementVector::iterator post_elem_iter = post_elements.begin();
while (post_elem_iter != post_elements.end()) {
std::string element_data;
std::string element_type;
CefRefPtr<CefPostDataElement> element = (*post_elem_iter);
if (element->GetType() == PDE_TYPE_EMPTY) {
element_type = "empty";
} else if (element->GetType() == PDE_TYPE_BYTES) {
element_data = ReadPostElementBytes(element);
element_type = "string";
} else if (element->GetType() == PDE_TYPE_FILE) {
element_data = element->GetFile().ToString();
element_type = "file";
}
post.push_back(std::pair<std::string, std::string>(element_type, element_data));
++post_elem_iter;
}
}
Response *result = route->Call(base_url, method, get, post);
if (result == nullptr) {
return nullptr;
}
std::string content_str = result->GetContent();
int content_size = content_str.size();
const char *content = content_str.c_str();
CefRefPtr<CefStreamReader> result_stream = CefStreamReader::CreateForData(
static_cast<void*>(const_cast<char*>(content)), content_size);
CefResponse::HeaderMap headers;
headers.insert(std::pair<CefString, CefString>("Access-Control-Allow-Origin", "*"));
headers.insert(std::pair<CefString, CefString>("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"));
headers.insert(std::pair<CefString, CefString>("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, PATCH, DELETE"));
return new CefStreamResourceHandler(200, "200 OK", result->GetMimeType(), headers, result_stream);
}
return nullptr;
}