A SpaceTraders Agent

info model + get request

altagos.dev 5b3f18b2 b09d2a88

verified
+67
+2
src/st/models.zig
··· 1 + pub const Info = @import("models/Info.zig"); 2 + 1 3 pub fn Wrapper(comptime T: type) type { 2 4 return struct { 3 5 data: ?T = null,
+65
src/st/models/Info.zig
··· 1 + const st = @import("../root.zig"); 2 + const Client = st.http.Client; 3 + const RawResponse = st.http.RawResponse; 4 + 5 + const Info = @This(); 6 + 7 + status: []const u8, 8 + version: []const u8, 9 + resetDate: []const u8, 10 + description: []const u8, 11 + stats: Stats, 12 + health: struct { 13 + lastMarketUpdate: []const u8, 14 + }, 15 + leaderboards: Leaderboards, 16 + serverResets: Resets, 17 + announcements: []Announcements, 18 + links: []Links, 19 + 20 + pub const Stats = struct { 21 + agents: u64, 22 + ships: u64, 23 + systems: u64, 24 + waypoints: u64, 25 + accounts: u64, 26 + }; 27 + 28 + pub const Leaderboards = struct { 29 + mostCredits: []Credits, 30 + mostSubmittedCharts: []SubmittedCharts, 31 + 32 + pub const Credits = struct { 33 + agentSymbol: []const u8, 34 + credits: u64, 35 + }; 36 + 37 + pub const SubmittedCharts = struct { 38 + agentSymbol: []const u8, 39 + chartCount: u64, 40 + }; 41 + }; 42 + 43 + pub const Resets = struct { 44 + next: []const u8, 45 + frequency: enum { daily, weekly }, 46 + }; 47 + 48 + pub const Announcements = struct { 49 + title: []const u8, 50 + body: []const u8, 51 + }; 52 + 53 + pub const Links = struct { 54 + name: []const u8, 55 + url: []const u8, 56 + }; 57 + 58 + pub fn get(client: *Client) !RawResponse(Info) { 59 + return client.request( 60 + Info, 61 + "/", 62 + .{}, 63 + .{ .auth = .none }, 64 + ); 65 + }