Switch from sdk to api package
Some checks failed
test / test (push) Has been cancelled

This commit is contained in:
Lily Rose 2025-07-09 17:14:26 +10:00
parent c0ba436847
commit 456faeaa60
5 changed files with 55 additions and 50 deletions

View file

@ -2,12 +2,12 @@ import argv
import gleam/io
import gleam/list
import gleam_community/ansi
import spacetraders_api
import spacetraders_api_httpc
import spacetraders_client/env
import spacetraders_client/pretty_print
import spacetraders_models/agent_symbol
import spacetraders_models/agent_token
import spacetraders_models/faction_symbol
import spacetraders_sdk
const usage = "\nusage: gleam -m spacetraders_register AGENT_SYMBOL FACTION_SYMBOL"
@ -24,7 +24,7 @@ pub fn main() {
let assert Ok(faction_symbol) = faction_symbol.parse(faction_symbol_str)
as { "invalid faction symbol\n" <> usage }
let assert Ok(registered) =
spacetraders_api.register_new_agent(
spacetraders_api_httpc.register_new_agent(
account_token,
agent_symbol,
faction_symbol,
@ -33,8 +33,7 @@ pub fn main() {
io.println(ansi.bold(ansi.underline(ansi.green("Successfully Registered"))))
io.println(
ansi.bold("Agent Token:\t")
<> spacetraders_sdk.agent_token_to_string(registered.token),
ansi.bold("Agent Token:\t") <> agent_token.to_string(registered.token),
)
io.println("")

View file

@ -4,21 +4,22 @@ gleam = ">= 1.11.0"
description = "A Gleam client for the spacetraders.io game"
licences = ["MIT"]
repository = { type = "forgejo", host = "git.7cs.dev", user = "lily", repo = "gleam-spacetraders-client" }
# links = [{ title = "Website", href = "" }]
[dependencies]
gleam_stdlib = ">= 0.60.0 and < 1.0.0"
gleam_json = ">= 3.0.1 and < 4.0.0"
gleam_http = ">= 4.0.0 and < 5.0.0"
gleam_httpc = ">= 4.1.1 and < 5.0.0"
argv = ">= 1.0.2 and < 2.0.0"
gleam_erlang = ">= 1.0.0 and < 2.0.0"
gleam_otp = ">= 1.0.0 and < 2.0.0"
gleam_community_ansi = ">= 1.4.3 and < 2.0.0"
shore = ">= 1.1.0 and < 2.0.0"
envoy = ">= 1.0.2 and < 2.0.0"
gleam_stdlib = ">= 0.44.0 and < 1.0.0"
gleam_json = ">= 3.0.2 and < 4.0.0"
gleam_time = ">= 1.2.0 and < 2.0.0"
spacetraders_sdk = ">= 1.6.0 and < 2.0.0"
gleam_http = ">= 4.1.0 and < 5.0.0"
gleam_httpc = ">= 4.1.1 and < 5.0.0"
gleam_erlang = ">= 1.2.0 and < 2.0.0"
gleam_otp = ">= 1.0.0 and < 2.0.0"
envoy = ">= 1.0.2 and < 2.0.0"
shore = ">= 1.1.0 and < 2.0.0"
gleam_community_ansi = ">= 1.4.3 and < 2.0.0"
spacetraders_models = ">= 1.1.0 and < 2.0.0"
spacetraders_api = ">= 1.1.0 and < 2.0.0"
spacetraders_api_httpc = ">= 1.1.0 and < 2.0.0"
[dev-dependencies]
gleeunit = ">= 1.5.1 and < 2.0.0"
gleeunit = ">= 1.0.0 and < 2.0.0"
argv = ">= 1.0.2 and < 2.0.0"

View file

@ -5,31 +5,35 @@ packages = [
{ name = "argv", version = "1.0.2", build_tools = ["gleam"], requirements = [], otp_app = "argv", source = "hex", outer_checksum = "BA1FF0929525DEBA1CE67256E5ADF77A7CDDFE729E3E3F57A5BDCAA031DED09D" },
{ name = "envoy", version = "1.0.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "envoy", source = "hex", outer_checksum = "95FD059345AA982E89A0B6E2A3BF1CF43E17A7048DCD85B5B65D3B9E4E39D359" },
{ name = "gleam_community_ansi", version = "1.4.3", build_tools = ["gleam"], requirements = ["gleam_community_colour", "gleam_regexp", "gleam_stdlib"], otp_app = "gleam_community_ansi", source = "hex", outer_checksum = "8A62AE9CC6EA65BEA630D95016D6C07E4F9973565FA3D0DE68DC4200D8E0DD27" },
{ name = "gleam_community_colour", version = "2.0.1", build_tools = ["gleam"], requirements = ["gleam_json", "gleam_stdlib"], otp_app = "gleam_community_colour", source = "hex", outer_checksum = "F0ACE69E3A47E913B03D3D0BB23A5563A91A4A7D20956916286068F4A9F817FE" },
{ name = "gleam_erlang", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_erlang", source = "hex", outer_checksum = "7E6A5234F927C4B24F8054AB1E4572206C41F9E6D5C6C02273CB7531E7E5CED0" },
{ name = "gleam_http", version = "4.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_http", source = "hex", outer_checksum = "0A62451FC85B98062E0907659D92E6A89F5F3C0FBE4AB8046C99936BF6F91DBC" },
{ name = "gleam_community_colour", version = "2.0.2", build_tools = ["gleam"], requirements = ["gleam_json", "gleam_stdlib"], otp_app = "gleam_community_colour", source = "hex", outer_checksum = "E34DD2C896AC3792151EDA939DA435FF3B69922F33415ED3C4406C932FBE9634" },
{ name = "gleam_erlang", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_erlang", source = "hex", outer_checksum = "F91CE62A2D011FA13341F3723DB7DB118541AAA5FE7311BD2716D018F01EF9E3" },
{ name = "gleam_http", version = "4.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_http", source = "hex", outer_checksum = "DB25DFC8530B64B77105405B80686541A0D96F7E2D83D807D6B2155FB9A8B1B8" },
{ name = "gleam_httpc", version = "4.1.1", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_http", "gleam_stdlib"], otp_app = "gleam_httpc", source = "hex", outer_checksum = "C670EBD46FC1472AD5F1F74F1D3938D1D0AC1C7531895ED1D4DDCB6F07279F43" },
{ name = "gleam_json", version = "3.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "5BA154440B22D9800955B1AB854282FA37B97F30F409D76B0824D0A60C934188" },
{ name = "gleam_json", version = "3.0.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "874FA3C3BB6E22DD2BB111966BD40B3759E9094E05257899A7C08F5DE77EC049" },
{ name = "gleam_otp", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib"], otp_app = "gleam_otp", source = "hex", outer_checksum = "7020E652D18F9ABAC9C877270B14160519FA0856EE80126231C505D719AD68DA" },
{ name = "gleam_regexp", version = "1.1.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_regexp", source = "hex", outer_checksum = "9C215C6CA84A5B35BB934A9B61A9A306EC743153BE2B0425A0D032E477B062A9" },
{ name = "gleam_stdlib", version = "0.60.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "621D600BB134BC239CB2537630899817B1A42E60A1D46C5E9F3FAE39F88C800B" },
{ name = "gleam_stdlib", version = "0.61.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "3DC407D6EDA98FCE089150C11F3AD892B6F4C3CA77C87A97BAE8D5AB5E41F331" },
{ name = "gleam_time", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_time", source = "hex", outer_checksum = "D71F1AFF7FEB534FF55E5DC58E534E9201BA75A444619788A2E4DEA4EBD87D16" },
{ name = "gleeunit", version = "1.5.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "D33B7736CF0766ED3065F64A1EBB351E72B2E8DE39BAFC8ADA0E35E92A6A934F" },
{ name = "gleeunit", version = "1.6.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "63022D81C12C17B7F1A60E029964E830A4CBD846BBC6740004FC1F1031AE0326" },
{ name = "shore", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_otp", "gleam_stdlib"], otp_app = "shore", source = "hex", outer_checksum = "B5929F807459EAE243E4664D41F02696B5D3E9CE314971E8C2ECB57007CA9210" },
{ name = "spacetraders_sdk", version = "1.6.0", build_tools = ["gleam"], requirements = ["gleam_http", "gleam_httpc", "gleam_json", "gleam_stdlib", "gleam_time"], otp_app = "spacetraders_sdk", source = "hex", outer_checksum = "B6DF94B8453A7D812B3B805062972CB0DA58B8A45DD884B59E85B2D47CCF3339" },
{ name = "spacetraders_api", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_http", "gleam_json", "gleam_stdlib", "spacetraders_models"], otp_app = "spacetraders_api", source = "hex", outer_checksum = "0969A610FEB63001B2697E8C21A87B2A0C89D53EC64E1BDF4D01C2734FF07DA8" },
{ name = "spacetraders_api_httpc", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_http", "gleam_httpc", "gleam_json", "gleam_stdlib", "spacetraders_api", "spacetraders_models"], otp_app = "spacetraders_api_httpc", source = "hex", outer_checksum = "65A86416EBA39FFB082C6877DAED54B511636E7FEB0B80514D36C37DD665CF51" },
{ name = "spacetraders_models", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_http", "gleam_json", "gleam_stdlib", "gleam_time"], otp_app = "spacetraders_models", source = "hex", outer_checksum = "6A0CBC5CFC54313170AEEF813567C910D212F4FDB9AAA3B45F078A48935038A1" },
]
[requirements]
argv = { version = ">= 1.0.2 and < 2.0.0" }
envoy = { version = ">= 1.0.2 and < 2.0.0" }
gleam_community_ansi = { version = ">= 1.4.3 and < 2.0.0" }
gleam_erlang = { version = ">= 1.0.0 and < 2.0.0" }
gleam_http = { version = ">= 4.0.0 and < 5.0.0" }
gleam_erlang = { version = ">= 1.2.0 and < 2.0.0" }
gleam_http = { version = ">= 4.1.0 and < 5.0.0" }
gleam_httpc = { version = ">= 4.1.1 and < 5.0.0" }
gleam_json = { version = ">= 3.0.1 and < 4.0.0" }
gleam_json = { version = ">= 3.0.2 and < 4.0.0" }
gleam_otp = { version = ">= 1.0.0 and < 2.0.0" }
gleam_stdlib = { version = ">= 0.60.0 and < 1.0.0" }
gleam_stdlib = { version = ">= 0.44.0 and < 1.0.0" }
gleam_time = { version = ">= 1.2.0 and < 2.0.0" }
gleeunit = { version = ">= 1.5.1 and < 2.0.0" }
gleeunit = { version = ">= 1.0.0 and < 2.0.0" }
shore = { version = ">= 1.1.0 and < 2.0.0" }
spacetraders_sdk = { version = ">= 1.6.0 and < 2.0.0" }
spacetraders_api = { version = ">= 1.1.0 and < 2.0.0" }
spacetraders_api_httpc = { version = ">= 1.1.0 and < 2.0.0" }
spacetraders_models = { version = ">= 1.1.0 and < 2.0.0" }

View file

@ -9,27 +9,28 @@ import shore/layout
import shore/style
import shore/ui
import spacetraders_api.{type ServerStatus}
import spacetraders_api_httpc.{type HttpcApiError, type HttpcApiResponse}
import spacetraders_client/env.{type Env}
import spacetraders_client/pretty_print
import spacetraders_sdk.{type AgentToken, type ApiError, type ApiResponse}
import spacetraders_models/agent_token.{type AgentToken}
pub fn print_general_info(agent_token: AgentToken) {
let assert Ok(account) = spacetraders_api.get_account(agent_token)
let assert Ok(account) = spacetraders_api_httpc.get_account(agent_token)
pretty_print.account(account)
io.println("")
let assert Ok(agent) = spacetraders_api.get_agent(agent_token)
let assert Ok(agent) = spacetraders_api_httpc.get_agent(agent_token)
pretty_print.agent(agent)
io.println("")
let assert Ok(server_status) = spacetraders_api.get_server_status()
let assert Ok(server_status) = spacetraders_api_httpc.get_server_status()
pretty_print.server_status(server_status, True, True)
io.println("")
}
pub fn print_ships(agent_token: AgentToken) {
let assert Ok(ships) =
spacetraders_api.list_ships(agent_token, option.None, option.None)
spacetraders_api_httpc.list_ships(agent_token, option.None, option.None)
list.each(ships.data, fn(ship) {
pretty_print.ship(ship)
io.println("")
@ -38,7 +39,7 @@ pub fn print_ships(agent_token: AgentToken) {
pub fn print_contracts(agent_token: AgentToken) {
let assert Ok(contracts) =
spacetraders_api.list_contracts(agent_token, option.None, option.None)
spacetraders_api_httpc.list_contracts(agent_token, option.None, option.None)
list.each(contracts.data, fn(contract) {
pretty_print.contract(contract)
io.println("")
@ -62,18 +63,18 @@ pub fn main() -> Nil {
pub opaque type LastServerStatus {
Loading
Loaded(response: ApiResponse(ServerStatus))
Refreshing(prev_response: ApiResponse(ServerStatus))
Loaded(response: HttpcApiResponse(ServerStatus))
Refreshing(prev_response: HttpcApiResponse(ServerStatus))
Refreshed(
prev_response: ApiResponse(ServerStatus),
response: ApiResponse(ServerStatus),
prev_response: HttpcApiResponse(ServerStatus),
response: HttpcApiResponse(ServerStatus),
)
}
pub opaque type Model {
Model(
env: Env,
errors: List(ApiError),
errors: List(HttpcApiError),
last_request: Option(Timestamp),
last_server_status: LastServerStatus,
)
@ -83,7 +84,7 @@ pub opaque type Msg {
NoOp
DismissErrors
GetServerStatus
GotServerStatus(response: ApiResponse(ServerStatus))
GotServerStatus(response: HttpcApiResponse(ServerStatus))
}
fn init() -> #(Model, List(fn() -> Msg)) {
@ -105,7 +106,7 @@ fn update(model: Model, msg: Msg) -> #(Model, List(fn() -> Msg)) {
| Refreshing(prev_response)
| Refreshed(response: prev_response, ..) -> Refreshing(prev_response:)
}),
[fn() { GotServerStatus(spacetraders_api.get_server_status()) }],
[fn() { GotServerStatus(spacetraders_api_httpc.get_server_status()) }],
)
GotServerStatus(response) -> {
#(

View file

@ -1,8 +1,8 @@
import envoy
import gleam/result
import spacetraders_sdk.{
type AccountToken, type AgentToken, type TokenParseError,
}
import spacetraders_models/account_token.{type AccountToken}
import spacetraders_models/agent_token.{type AgentToken}
import spacetraders_models/token_parse_error.{type TokenParseError}
pub type Env {
Env(account_token: AccountToken, agent_token: AgentToken)
@ -20,17 +20,17 @@ fn get(name: String) -> Result(String, EnvError) {
fn get_token(name: String, parse: fn(String) -> Result(token, TokenParseError)) {
get(name)
|> result.then(fn(value) {
|> result.try(fn(value) {
parse(value) |> result.map_error(InvalidTokenVar(name:, error: _))
})
}
pub fn get_account_token() -> Result(AccountToken, EnvError) {
get_token("ACCOUNT_TOKEN", spacetraders_sdk.parse_account_token)
get_token("ACCOUNT_TOKEN", account_token.parse)
}
pub fn get_agent_token() -> Result(AgentToken, EnvError) {
get_token("AGENT_TOKEN", spacetraders_sdk.parse_agent_token)
get_token("AGENT_TOKEN", agent_token.parse)
}
pub fn load_env() -> Result(Env, EnvError) {