A SpaceTraders Agent
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 98 lines 2.7 kB view raw
1const std = @import("std"); 2 3const pretty = @import("pretty").pretty; 4 5const meta = @import("meta"); 6 7const st = @import("st"); 8const api = st.api; 9const Client = st.http.Client; 10const m = st.models; 11 12const agent = @import("agent"); 13const Config = agent.config.Config; 14 15pub const known_folders_config: @import("known-folders").KnownFolderConfig = .{ 16 .xdg_on_mac = true, 17}; 18 19fn juicyMain( 20 gpa: std.mem.Allocator, 21 io: std.Io, 22 config: *const Config, 23 client: *Client, 24) !void { 25 var db = try agent.data.DB.open(gpa, config.db); 26 defer db.deinit(); 27 28 // var register_f = try api.agent.register(client, "ALTAGOS", .ANCIENTS); 29 // defer _ = register_f.cancel(io) catch {}; 30 31 // const register = try register_f.await(io); 32 // defer register.deinit(); 33 34 // std.log.info("Registered agent\n{f}", .{pretty(register.value)}); 35 36 var af = try api.agent.own(client); 37 defer _ = af.cancel(io) catch {}; 38 39 var fleet_f = try api.fleet.listShips(client, .{}); 40 defer _ = fleet_f.cancel(io) catch {}; 41 42 var traits = [_]m.systems.Waypoint.Trait{ .MARKETPLACE, .INDUSTRIAL, .OCEAN }; 43 var waypoints_f = try api.system.waypoints( 44 client, 45 (try m.parseSymbol("X1-TA72")).system, 46 .{ .traits = &traits }, 47 .{}, 48 ); 49 defer _ = waypoints_f.cancel(io) catch {}; 50 51 const own = try af.await(io); 52 defer own.deinit(); 53 54 const fleet = try fleet_f.await(io); 55 defer fleet.deinit(); 56 57 const waypoints = try waypoints_f.await(io); 58 defer waypoints.deinit(); 59 60 std.log.info("Agent: {f}", .{pretty(own.value)}); 61 std.log.info("Ships: {f}", .{pretty(fleet.value.data.?)}); 62 std.log.info("Waypoints with {any} traits: {f}", .{ traits, pretty(waypoints.value.data.?) }); 63 64 if (waypoints.value.data.?.len > 0) { 65 var market_f = try api.system.market( 66 client, 67 waypoints.value.data.?[0].symbol.waypoint, 68 ); 69 defer _ = market_f.cancel(io) catch {}; 70 71 const market = try market_f.await(io); 72 defer market.deinit(); 73 74 std.log.info("Market: {f}", .{pretty(market.value.data.?)}); 75 } 76} 77 78pub fn main(init: std.process.Init) !void { 79 const allocator = init.gpa; 80 81 var io_impl: std.Io.Threaded = .init(allocator, .{ 82 .environ = init.minimal.environ, 83 }); 84 defer io_impl.deinit(); 85 const io = io_impl.io(); 86 87 std.log.debug("Io threads: {}", .{io_impl.concurrent_limit.toInt() orelse 0}); 88 89 const config = try agent.config.load(io, allocator, init.environ_map); 90 defer agent.config.free(allocator, config); 91 92 var client = Client.init(allocator, io, .{ 93 .auth = config.auth, 94 }); 95 defer client.deinit(); 96 97 try juicyMain(allocator, io, &config, &client); 98}