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