tangled
alpha
login
or
join now
altagos.dev
/
space
0
fork
atom
A SpaceTraders Agent
0
fork
atom
overview
issues
pulls
pipelines
fix http abstraction
altagos.dev
3 weeks ago
04cfde05
b4302ee5
verified
This commit was signed with the committer's
known signature
.
altagos.dev
SSH Key Fingerprint:
SHA256:UbTjEcCZlc6GzQWLCuDK3D//HESWD2xFPkzue9XMras=
+22
-11
1 changed file
expand all
collapse all
unified
split
src
st
http.zig
+22
-11
src/st/http.zig
···
3
const Io = std.Io;
4
const json = std.json;
5
0
6
const models = @import("models.zig");
7
-
8
-
const TIME_SLEEP_FACTOR: f64 = 0.98;
9
10
const log = std.log.scoped(.SpaceTraders);
11
···
307
);
308
}
309
0
0
0
0
0
0
310
pub fn requestRaw(
311
client: *Client,
312
comptime T: type,
···
321
var req = try client.http.request(opts.method, uri, .{
322
.headers = .{
323
.authorization = opts.authorization(client),
324
-
.user_agent = .{ .override = "SPACE/0.1" },
325
.content_type = .{ .override = "application/json" },
326
},
327
});
···
366
client.average_latency.store(new_average, .seq_cst);
367
_ = client.total_latency.fetchAdd(latency, .seq_cst);
368
369
-
log.debug("latency: {} ms - average: {}ms", .{ latency, new_average });
370
-
371
log.debug(
372
-
"\x1b[2m[path = {s}]\x1b[0m received {s}{d} {s}\x1b[0m",
373
-
.{ url[client.base_url.len..], colour, response.head.status, response.head.reason },
374
);
375
376
// var header_iter = response.head.iterateHeaders();
···
382
var transfer_buffer: [64]u8 = undefined;
383
var decompress: std.http.Decompress = undefined;
384
385
-
const decompressed_body_reader = response.readerDecompressing(&transfer_buffer, &decompress, &decompress_buffer);
0
0
0
0
386
387
-
var json_reader: json.Reader = .init(client.allocator, decompressed_body_reader);
0
0
0
0
0
388
defer json_reader.deinit();
389
390
const result = json.parseFromTokenSource(T, client.allocator, &json_reader, .{
391
.ignore_unknown_fields = true,
392
}) catch |err| {
393
-
log.err("Error parsing response: {}", .{err});
394
-
395
return RequestError.InvalidResponse;
396
};
397
···
3
const Io = std.Io;
4
const json = std.json;
5
6
+
const buildin = @import("builtin");
7
const models = @import("models.zig");
0
0
8
9
const log = std.log.scoped(.SpaceTraders);
10
···
306
);
307
}
308
309
+
const user_agent = blk: {
310
+
const os = std.fmt.comptimePrint("{}", .{buildin.os.tag})[1..];
311
+
const arch = std.fmt.comptimePrint("{}", .{buildin.cpu.arch})[1..];
312
+
break :blk "space/0.1 (" ++ buildin.zig_version_string ++ "/" ++ os ++ "/" ++ arch ++ "; https://tangled.org/altagos.dev/space; +agent)";
313
+
};
314
+
315
pub fn requestRaw(
316
client: *Client,
317
comptime T: type,
···
326
var req = try client.http.request(opts.method, uri, .{
327
.headers = .{
328
.authorization = opts.authorization(client),
329
+
.user_agent = .{ .override = user_agent },
330
.content_type = .{ .override = "application/json" },
331
},
332
});
···
371
client.average_latency.store(new_average, .seq_cst);
372
_ = client.total_latency.fetchAdd(latency, .seq_cst);
373
0
0
374
log.debug(
375
+
"\x1b[2m[latency = {d}ms path = {s}]\x1b[0m received {s}{d} {s}\x1b[0m",
376
+
.{ latency, url[client.base_url.len..], colour, response.head.status, response.head.reason },
377
);
378
379
// var header_iter = response.head.iterateHeaders();
···
385
var transfer_buffer: [64]u8 = undefined;
386
var decompress: std.http.Decompress = undefined;
387
388
+
const decompressed_body_reader = response.readerDecompressing(
389
+
&transfer_buffer,
390
+
&decompress,
391
+
&decompress_buffer,
392
+
);
393
394
+
const body = decompressed_body_reader.allocRemaining(client.allocator, .unlimited) catch
395
+
return RequestError.OutOfMemory;
396
+
defer client.allocator.free(body);
397
+
398
+
var reader: Io.Reader = .fixed(body);
399
+
var json_reader: json.Reader = .init(client.allocator, &reader);
400
defer json_reader.deinit();
401
402
const result = json.parseFromTokenSource(T, client.allocator, &json_reader, .{
403
.ignore_unknown_fields = true,
404
}) catch |err| {
405
+
log.err("Error parsing response: {} - Body:\n{s}", .{ err, body });
0
406
return RequestError.InvalidResponse;
407
};
408