Skip to content

Commit bccbc36

Browse files
authored
Add sequence number to request data struct and update UI (#83)
* Add sequence number to request data struct and update UI * Update brew bundle command to prevent upgrades in check_macos script
1 parent fe6f3f4 commit bccbc36

File tree

4 files changed

+64
-51
lines changed

4 files changed

+64
-51
lines changed

.github/scripts/utils.zsh/check_macos

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ if (( ! ${+commands[brew]} )) {
1717
return 2
1818
}
1919

20-
brew bundle --file ${SCRIPT_HOME}/.Brewfile
20+
brew bundle --no-upgrade --file ${SCRIPT_HOME}/.Brewfile
2121
rehash
2222
log_group

src/request-data.cpp

+9-1
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,8 @@ struct request_data_handler_response request_data_handler(url_source_request_dat
164164
{
165165
struct request_data_handler_response response;
166166

167+
request_data->sequence_number++;
168+
167169
if (request_data->url_or_file == "file") {
168170
// This is a file request
169171
// Read the file
@@ -334,10 +336,14 @@ struct request_data_handler_response request_data_handler(url_source_request_dat
334336
// Replace the {input} placeholder with the source text
335337
inja::Environment env;
336338
// Add an inja callback for time formatting
337-
env.add_callback("strftime", 1, [](inja::Arguments &args) {
339+
env.add_callback("strftime", 2, [](inja::Arguments &args) {
338340
std::string format = args.at(0)->get<std::string>();
339341
std::time_t t = std::time(nullptr);
340342
std::tm *tm = std::localtime(&t);
343+
if (args.at(1)->get<bool>()) {
344+
// if the second argument is true, use UTC time
345+
tm = std::gmtime(&t);
346+
}
341347
char buffer[256];
342348
std::strftime(buffer, sizeof(buffer), format.c_str(), tm);
343349
return std::string(buffer);
@@ -351,6 +357,8 @@ struct request_data_handler_response request_data_handler(url_source_request_dat
351357
return input;
352358
});
353359

360+
json["seq"] = request_data->sequence_number;
361+
354362
// Replace the {input} placeholder in the querystring as well
355363
std::string url = request_data->url;
356364
try {

src/request-data.h

+2
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ struct url_source_request_data {
9595
std::string aggregate_to_empty_buffer;
9696
// agg buffer begin timestamp
9797
uint64_t agg_buffer_begin_ts;
98+
uint64_t sequence_number;
9899
std::string last_obs_text_source_value;
99100
std::string obs_input_source_resize_option;
100101
// SSL options
@@ -134,6 +135,7 @@ struct url_source_request_data {
134135
aggregate_to_target = URL_SOURCE_AGG_TARGET_NONE;
135136
aggregate_to_empty_buffer = std::string("");
136137
agg_buffer_begin_ts = 0;
138+
sequence_number = 0;
137139
last_obs_text_source_value = std::string("");
138140
obs_input_source_resize_option = std::string("100%");
139141
ssl_verify_peer = false;

src/ui/requestbuilder.ui

+52-49
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,51 @@
158158
</property>
159159
</widget>
160160
</item>
161+
<item row="4" column="1">
162+
<widget class="QWidget" name="widget_10" native="true">
163+
<layout class="QHBoxLayout" name="horizontalLayout_9">
164+
<property name="spacing">
165+
<number>6</number>
166+
</property>
167+
<property name="leftMargin">
168+
<number>0</number>
169+
</property>
170+
<property name="topMargin">
171+
<number>0</number>
172+
</property>
173+
<property name="rightMargin">
174+
<number>0</number>
175+
</property>
176+
<property name="bottomMargin">
177+
<number>0</number>
178+
</property>
179+
<item>
180+
<widget class="QComboBox" name="methodComboBox">
181+
<item>
182+
<property name="text">
183+
<string>GET</string>
184+
</property>
185+
</item>
186+
<item>
187+
<property name="text">
188+
<string>POST</string>
189+
</property>
190+
</item>
191+
</widget>
192+
</item>
193+
<item>
194+
<widget class="QCheckBox" name="checkBox_failonhttperrorcodes">
195+
<property name="toolTip">
196+
<string>Fail on e.g. 400 HTTP codes or continue and get the response body?</string>
197+
</property>
198+
<property name="text">
199+
<string>Fail on HTTP error code?</string>
200+
</property>
201+
</widget>
202+
</item>
203+
</layout>
204+
</widget>
205+
</item>
161206
<item row="6" column="0">
162207
<widget class="QLabel" name="label_4">
163208
<property name="text">
@@ -442,8 +487,11 @@
442487
</item>
443488
<item row="9" column="0">
444489
<widget class="QLabel" name="label_16">
490+
<property name="toolTip">
491+
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Available functions: (for URL field above as well)&lt;/p&gt;&lt;p&gt;- {{input}} : The dynamic input&lt;/p&gt;&lt;p&gt;- {{strftime(&amp;lt;format&amp;gt;, &amp;lt;utc? true/false&amp;gt;)}} : Add a formatted time&lt;/p&gt;&lt;p&gt;- {{urlencode(var)}} : URL Encoded input&lt;/p&gt;&lt;p&gt;- {{imageb64}} : Base64 encoded image input&lt;/p&gt;&lt;p&gt;- {{seq}} : Sequential counter for requests&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
492+
</property>
445493
<property name="text">
446-
<string>Body</string>
494+
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Body&lt;/p&gt;&lt;p&gt;ℹ️&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
447495
</property>
448496
</widget>
449497
</item>
@@ -463,21 +511,21 @@
463511
</property>
464512
</widget>
465513
</item>
466-
<item row="11" column="0">
514+
<item row="10" column="0">
467515
<widget class="QCheckBox" name="sslOptionsCheckbox">
468516
<property name="text">
469517
<string>SSL Options</string>
470518
</property>
471519
</widget>
472520
</item>
473-
<item row="12" column="0">
521+
<item row="11" column="0">
474522
<widget class="QLabel" name="label_6">
475523
<property name="text">
476524
<string/>
477525
</property>
478526
</widget>
479527
</item>
480-
<item row="12" column="1">
528+
<item row="11" column="1">
481529
<widget class="QGroupBox" name="sslOptionsGroup">
482530
<property name="title">
483531
<string/>
@@ -603,51 +651,6 @@
603651
</layout>
604652
</widget>
605653
</item>
606-
<item row="4" column="1">
607-
<widget class="QWidget" name="widget_10" native="true">
608-
<layout class="QHBoxLayout" name="horizontalLayout_9">
609-
<property name="spacing">
610-
<number>6</number>
611-
</property>
612-
<property name="leftMargin">
613-
<number>0</number>
614-
</property>
615-
<property name="topMargin">
616-
<number>0</number>
617-
</property>
618-
<property name="rightMargin">
619-
<number>0</number>
620-
</property>
621-
<property name="bottomMargin">
622-
<number>0</number>
623-
</property>
624-
<item>
625-
<widget class="QComboBox" name="methodComboBox">
626-
<item>
627-
<property name="text">
628-
<string>GET</string>
629-
</property>
630-
</item>
631-
<item>
632-
<property name="text">
633-
<string>POST</string>
634-
</property>
635-
</item>
636-
</widget>
637-
</item>
638-
<item>
639-
<widget class="QCheckBox" name="checkBox_failonhttperrorcodes">
640-
<property name="toolTip">
641-
<string>Fail on e.g. 400 HTTP codes or continue and get the response body?</string>
642-
</property>
643-
<property name="text">
644-
<string>Fail on HTTP error code?</string>
645-
</property>
646-
</widget>
647-
</item>
648-
</layout>
649-
</widget>
650-
</item>
651654
</layout>
652655
</widget>
653656
</item>

0 commit comments

Comments
 (0)