blob: 7565445cb4158d5e439c38b17599046859aee515 [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/devtools/devtools_dispatch_http_request_params.h"
DevToolsDispatchHttpRequestParams::DevToolsDispatchHttpRequestParams() =
default;
DevToolsDispatchHttpRequestParams::~DevToolsDispatchHttpRequestParams() =
default;
DevToolsDispatchHttpRequestParams::DevToolsDispatchHttpRequestParams(
const DevToolsDispatchHttpRequestParams&) = default;
DevToolsDispatchHttpRequestParams& DevToolsDispatchHttpRequestParams::operator=(
const DevToolsDispatchHttpRequestParams&) = default;
DevToolsDispatchHttpRequestParams::DevToolsDispatchHttpRequestParams(
DevToolsDispatchHttpRequestParams&&) = default;
DevToolsDispatchHttpRequestParams& DevToolsDispatchHttpRequestParams::operator=(
DevToolsDispatchHttpRequestParams&&) = default;
// static
std::optional<DevToolsDispatchHttpRequestParams>
DevToolsDispatchHttpRequestParams::FromDict(const base::Value::Dict& dict) {
const std::string* service = dict.FindString("service");
if (!service) {
return std::nullopt;
}
const std::string* path = dict.FindString("path");
if (!path) {
return std::nullopt;
}
const std::string* method = dict.FindString("method");
if (!method) {
return std::nullopt;
}
DevToolsDispatchHttpRequestParams params;
params.service = *service;
params.path = *path;
params.method = *method;
const std::string* body = dict.FindString("body");
if (body) {
params.body = *body;
}
const base::Value::Dict* query_params_dict = dict.FindDict("queryParams");
if (query_params_dict) {
for (auto it : *query_params_dict) {
const std::string& key = it.first;
const base::Value& value = it.second;
if (value.is_string()) {
params.query_params[key].push_back(value.GetString());
} else if (value.is_list()) {
for (const auto& item : value.GetList()) {
if (item.is_string()) {
params.query_params[key].push_back(item.GetString());
}
}
}
}
}
return params;
}