summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Uko Kokņevičs2024-08-25 17:02:58 +0800
committerGravatar Uko Kokņevičs2024-08-25 17:02:58 +0800
commit734cdeef1294119100b3f650c988b8ba6caed2c0 (patch)
treee822dca4963a73b3943ba1ac9a37b4b905981ada
parentAdd a default values to (hopefully) all nullable fields (diff)
downloadukkobot-734cdeef1294119100b3f650c988b8ba6caed2c0.tar.gz
ukkobot-734cdeef1294119100b3f650c988b8ba6caed2c0.tar.xz
ukkobot-734cdeef1294119100b3f650c988b8ba6caed2c0.zip
Retry the HTTP calls occasionally
-rw-r--r--src/Bot.zig20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/Bot.zig b/src/Bot.zig
index adfafef..8e69579 100644
--- a/src/Bot.zig
+++ b/src/Bot.zig
@@ -136,6 +136,26 @@ fn call(
136 uri: Uri, 136 uri: Uri,
137 data: ?[]const u8, 137 data: ?[]const u8,
138) !Parsed(T) { 138) !Parsed(T) {
139 var tries: i8 = 0;
140 while (true) : (tries += 1) {
141 if (self.wrappedCall(T, method, uri, data)) |res| {
142 return res;
143 } else |err| {
144 std.log.warn("error when performing call: {}", .{err});
145 if (tries == 20) {
146 return err;
147 }
148 }
149 }
150}
151
152fn wrappedCall(
153 self: *Bot,
154 comptime T: type,
155 comptime method: HttpMethod,
156 uri: Uri,
157 data: ?[]const u8,
158) !Parsed(T) {
139 while (true) { 159 while (true) {
140 var request = try self.http_client.open(method, uri, .{ 160 var request = try self.http_client.open(method, uri, .{
141 .server_header_buffer = &self.server_header_buffer, 161 .server_header_buffer = &self.server_header_buffer,