Skip to content

Commit

Permalink
burl: allow removal of internal headers by providing empty replacements
Browse files Browse the repository at this point in the history
  • Loading branch information
ashtum committed Dec 5, 2024
1 parent 7083eb3 commit 8692e4b
Showing 1 changed file with 25 additions and 13 deletions.
38 changes: 25 additions & 13 deletions example/client/burl/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -282,10 +282,22 @@ create_request(
// Set user provided headers
if(vm.count("header"))
{
for(auto& header : vm.at("header").as<std::vector<std::string>>())
for(core::string_view header : vm.at("header").as<std::vector<std::string>>())
{
if(auto pos = header.find(':'); pos != std::string::npos)
request.set(header.substr(0, pos), header.substr(pos + 1));
{
auto name = header.substr(0, pos);
auto value = header.substr(pos + 1);
if(!value.empty())
request.set(name, value);
else
request.erase(name);
}
else if(auto pos = header.find(';'); pos != std::string::npos)
{
auto name = header.substr(0, pos);
request.set(name, "");
}
}
}

Expand Down Expand Up @@ -757,12 +769,12 @@ main(int argc, char* argv[])
if(vm.count("form"))
{
auto form = multipart_form{};
for(auto& data : vm.at("form").as<std::vector<std::string>>())
for(core::string_view data : vm.at("form").as<std::vector<std::string>>())
{
if(auto pos = data.find('='); pos != std::string::npos)
if(auto pos = data.find('='); pos != core::string_view::npos)
{
auto name = core::string_view{ data }.substr(0, pos);
auto value = core::string_view{ data }.substr(pos + 1);
auto name = data.substr(0, pos);
auto value = data.substr(pos + 1);
if(!value.empty() && value[0] == '@')
{
form.append_file(
Expand All @@ -788,9 +800,9 @@ main(int argc, char* argv[])
{
if(vm.count("get"))
{
for(auto data : vm.at("data").as<std::vector<std::string>>())
for(core::string_view data : vm.at("data").as<std::vector<std::string>>())
{
if(auto pos = data.find('='); pos != std::string::npos)
if(auto pos = data.find('='); pos != core::string_view::npos)
{
url.params().append(
{ data.substr(0, pos), data.substr(pos + 1) });
Expand All @@ -804,15 +816,15 @@ main(int argc, char* argv[])
else
{
auto form = urlencoded_form{};
for(auto& data : vm.at("data").as<std::vector<std::string>>())
for(core::string_view data : vm.at("data").as<std::vector<std::string>>())
{
if(!data.empty() && data[0] == '@')
{
form.append(any_istream{ data.substr(1) });
}
else
{
if(auto pos = data.find('='); pos != std::string::npos)
if(auto pos = data.find('='); pos != core::string_view::npos)
{
form.append(
data.substr(0, pos),
Expand All @@ -831,7 +843,7 @@ main(int argc, char* argv[])
if(vm.count("json"))
{
auto body = json_body{};
for(auto& data : vm.at("json").as<std::vector<std::string>>())
for(core::string_view data : vm.at("json").as<std::vector<std::string>>())
{
if(data.empty())
continue;
Expand All @@ -856,10 +868,10 @@ main(int argc, char* argv[])

if(vm.count("cookie"))
{
for(auto& option : vm.at("cookie").as<std::vector<std::string>>())
for(core::string_view option : vm.at("cookie").as<std::vector<std::string>>())
{
// empty options are allowerd and just activates cookie engine
if(option.find('=') != std::string::npos)
if(option.find('=') != core::string_view::npos)
{
if(!explicit_cookies.ends_with(';'))
explicit_cookies.push_back(';');
Expand Down

0 comments on commit 8692e4b

Please sign in to comment.