Skip to content

Commit 607439f

Browse files
committed
burl: allow removal of internal headers by providing empty replacements
1 parent 49fca2a commit 607439f

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

example/client/burl/main.cpp

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -282,10 +282,22 @@ create_request(
282282
// Set user provided headers
283283
if(vm.count("header"))
284284
{
285-
for(auto& header : vm.at("header").as<std::vector<std::string>>())
285+
for(core::string_view header : vm.at("header").as<std::vector<std::string>>())
286286
{
287287
if(auto pos = header.find(':'); pos != std::string::npos)
288-
request.set(header.substr(0, pos), header.substr(pos + 1));
288+
{
289+
auto name = header.substr(0, pos);
290+
auto value = header.substr(pos + 1);
291+
if(!value.empty())
292+
request.set(name, value);
293+
else
294+
request.erase(name);
295+
}
296+
else if(auto pos = header.find(';'); pos != std::string::npos)
297+
{
298+
auto name = header.substr(0, pos);
299+
request.set(name, "");
300+
}
289301
}
290302
}
291303

@@ -757,12 +769,12 @@ main(int argc, char* argv[])
757769
if(vm.count("form"))
758770
{
759771
auto form = multipart_form{};
760-
for(auto& data : vm.at("form").as<std::vector<std::string>>())
772+
for(core::string_view data : vm.at("form").as<std::vector<std::string>>())
761773
{
762-
if(auto pos = data.find('='); pos != std::string::npos)
774+
if(auto pos = data.find('='); pos != core::string_view::npos)
763775
{
764-
auto name = core::string_view{ data }.substr(0, pos);
765-
auto value = core::string_view{ data }.substr(pos + 1);
776+
auto name = data.substr(0, pos);
777+
auto value = data.substr(pos + 1);
766778
if(!value.empty() && value[0] == '@')
767779
{
768780
form.append_file(
@@ -788,9 +800,9 @@ main(int argc, char* argv[])
788800
{
789801
if(vm.count("get"))
790802
{
791-
for(auto data : vm.at("data").as<std::vector<std::string>>())
803+
for(core::string_view data : vm.at("data").as<std::vector<std::string>>())
792804
{
793-
if(auto pos = data.find('='); pos != std::string::npos)
805+
if(auto pos = data.find('='); pos != core::string_view::npos)
794806
{
795807
url.params().append(
796808
{ data.substr(0, pos), data.substr(pos + 1) });
@@ -804,15 +816,15 @@ main(int argc, char* argv[])
804816
else
805817
{
806818
auto form = urlencoded_form{};
807-
for(auto& data : vm.at("data").as<std::vector<std::string>>())
819+
for(core::string_view data : vm.at("data").as<std::vector<std::string>>())
808820
{
809821
if(!data.empty() && data[0] == '@')
810822
{
811823
form.append(any_istream{ data.substr(1) });
812824
}
813825
else
814826
{
815-
if(auto pos = data.find('='); pos != std::string::npos)
827+
if(auto pos = data.find('='); pos != core::string_view::npos)
816828
{
817829
form.append(
818830
data.substr(0, pos),
@@ -831,7 +843,7 @@ main(int argc, char* argv[])
831843
if(vm.count("json"))
832844
{
833845
auto body = json_body{};
834-
for(auto& data : vm.at("json").as<std::vector<std::string>>())
846+
for(core::string_view data : vm.at("json").as<std::vector<std::string>>())
835847
{
836848
if(data.empty())
837849
continue;
@@ -856,10 +868,10 @@ main(int argc, char* argv[])
856868

857869
if(vm.count("cookie"))
858870
{
859-
for(auto& option : vm.at("cookie").as<std::vector<std::string>>())
871+
for(core::string_view option : vm.at("cookie").as<std::vector<std::string>>())
860872
{
861873
// empty options are allowerd and just activates cookie engine
862-
if(option.find('=') != std::string::npos)
874+
if(option.find('=') != core::string_view::npos)
863875
{
864876
if(!explicit_cookies.ends_with(';'))
865877
explicit_cookies.push_back(';');

0 commit comments

Comments
 (0)