This commit is contained in:
parent
c0ba436847
commit
456faeaa60
5 changed files with 55 additions and 50 deletions
|
@ -2,12 +2,12 @@ import argv
|
||||||
import gleam/io
|
import gleam/io
|
||||||
import gleam/list
|
import gleam/list
|
||||||
import gleam_community/ansi
|
import gleam_community/ansi
|
||||||
import spacetraders_api
|
import spacetraders_api_httpc
|
||||||
import spacetraders_client/env
|
import spacetraders_client/env
|
||||||
import spacetraders_client/pretty_print
|
import spacetraders_client/pretty_print
|
||||||
import spacetraders_models/agent_symbol
|
import spacetraders_models/agent_symbol
|
||||||
|
import spacetraders_models/agent_token
|
||||||
import spacetraders_models/faction_symbol
|
import spacetraders_models/faction_symbol
|
||||||
import spacetraders_sdk
|
|
||||||
|
|
||||||
const usage = "\nusage: gleam -m spacetraders_register AGENT_SYMBOL FACTION_SYMBOL"
|
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)
|
let assert Ok(faction_symbol) = faction_symbol.parse(faction_symbol_str)
|
||||||
as { "invalid faction symbol\n" <> usage }
|
as { "invalid faction symbol\n" <> usage }
|
||||||
let assert Ok(registered) =
|
let assert Ok(registered) =
|
||||||
spacetraders_api.register_new_agent(
|
spacetraders_api_httpc.register_new_agent(
|
||||||
account_token,
|
account_token,
|
||||||
agent_symbol,
|
agent_symbol,
|
||||||
faction_symbol,
|
faction_symbol,
|
||||||
|
@ -33,8 +33,7 @@ pub fn main() {
|
||||||
|
|
||||||
io.println(ansi.bold(ansi.underline(ansi.green("Successfully Registered"))))
|
io.println(ansi.bold(ansi.underline(ansi.green("Successfully Registered"))))
|
||||||
io.println(
|
io.println(
|
||||||
ansi.bold("Agent Token:\t")
|
ansi.bold("Agent Token:\t") <> agent_token.to_string(registered.token),
|
||||||
<> spacetraders_sdk.agent_token_to_string(registered.token),
|
|
||||||
)
|
)
|
||||||
io.println("")
|
io.println("")
|
||||||
|
|
||||||
|
|
27
gleam.toml
27
gleam.toml
|
@ -4,21 +4,22 @@ gleam = ">= 1.11.0"
|
||||||
description = "A Gleam client for the spacetraders.io game"
|
description = "A Gleam client for the spacetraders.io game"
|
||||||
licences = ["MIT"]
|
licences = ["MIT"]
|
||||||
repository = { type = "forgejo", host = "git.7cs.dev", user = "lily", repo = "gleam-spacetraders-client" }
|
repository = { type = "forgejo", host = "git.7cs.dev", user = "lily", repo = "gleam-spacetraders-client" }
|
||||||
# links = [{ title = "Website", href = "" }]
|
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
gleam_stdlib = ">= 0.60.0 and < 1.0.0"
|
gleam_stdlib = ">= 0.44.0 and < 1.0.0"
|
||||||
gleam_json = ">= 3.0.1 and < 4.0.0"
|
gleam_json = ">= 3.0.2 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_time = ">= 1.2.0 and < 2.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]
|
[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"
|
||||||
|
|
|
@ -5,31 +5,35 @@ packages = [
|
||||||
{ name = "argv", version = "1.0.2", build_tools = ["gleam"], requirements = [], otp_app = "argv", source = "hex", outer_checksum = "BA1FF0929525DEBA1CE67256E5ADF77A7CDDFE729E3E3F57A5BDCAA031DED09D" },
|
{ 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 = "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_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_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.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_erlang", source = "hex", outer_checksum = "7E6A5234F927C4B24F8054AB1E4572206C41F9E6D5C6C02273CB7531E7E5CED0" },
|
{ 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.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_http", source = "hex", outer_checksum = "0A62451FC85B98062E0907659D92E6A89F5F3C0FBE4AB8046C99936BF6F91DBC" },
|
{ 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_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_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_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 = "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 = "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]
|
[requirements]
|
||||||
argv = { version = ">= 1.0.2 and < 2.0.0" }
|
argv = { version = ">= 1.0.2 and < 2.0.0" }
|
||||||
envoy = { 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_community_ansi = { version = ">= 1.4.3 and < 2.0.0" }
|
||||||
gleam_erlang = { version = ">= 1.0.0 and < 2.0.0" }
|
gleam_erlang = { version = ">= 1.2.0 and < 2.0.0" }
|
||||||
gleam_http = { version = ">= 4.0.0 and < 5.0.0" }
|
gleam_http = { version = ">= 4.1.0 and < 5.0.0" }
|
||||||
gleam_httpc = { version = ">= 4.1.1 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_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" }
|
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" }
|
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" }
|
||||||
|
|
|
@ -9,27 +9,28 @@ import shore/layout
|
||||||
import shore/style
|
import shore/style
|
||||||
import shore/ui
|
import shore/ui
|
||||||
import spacetraders_api.{type ServerStatus}
|
import spacetraders_api.{type ServerStatus}
|
||||||
|
import spacetraders_api_httpc.{type HttpcApiError, type HttpcApiResponse}
|
||||||
import spacetraders_client/env.{type Env}
|
import spacetraders_client/env.{type Env}
|
||||||
import spacetraders_client/pretty_print
|
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) {
|
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)
|
pretty_print.account(account)
|
||||||
io.println("")
|
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)
|
pretty_print.agent(agent)
|
||||||
io.println("")
|
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)
|
pretty_print.server_status(server_status, True, True)
|
||||||
io.println("")
|
io.println("")
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn print_ships(agent_token: AgentToken) {
|
pub fn print_ships(agent_token: AgentToken) {
|
||||||
let assert Ok(ships) =
|
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) {
|
list.each(ships.data, fn(ship) {
|
||||||
pretty_print.ship(ship)
|
pretty_print.ship(ship)
|
||||||
io.println("")
|
io.println("")
|
||||||
|
@ -38,7 +39,7 @@ pub fn print_ships(agent_token: AgentToken) {
|
||||||
|
|
||||||
pub fn print_contracts(agent_token: AgentToken) {
|
pub fn print_contracts(agent_token: AgentToken) {
|
||||||
let assert Ok(contracts) =
|
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) {
|
list.each(contracts.data, fn(contract) {
|
||||||
pretty_print.contract(contract)
|
pretty_print.contract(contract)
|
||||||
io.println("")
|
io.println("")
|
||||||
|
@ -62,18 +63,18 @@ pub fn main() -> Nil {
|
||||||
|
|
||||||
pub opaque type LastServerStatus {
|
pub opaque type LastServerStatus {
|
||||||
Loading
|
Loading
|
||||||
Loaded(response: ApiResponse(ServerStatus))
|
Loaded(response: HttpcApiResponse(ServerStatus))
|
||||||
Refreshing(prev_response: ApiResponse(ServerStatus))
|
Refreshing(prev_response: HttpcApiResponse(ServerStatus))
|
||||||
Refreshed(
|
Refreshed(
|
||||||
prev_response: ApiResponse(ServerStatus),
|
prev_response: HttpcApiResponse(ServerStatus),
|
||||||
response: ApiResponse(ServerStatus),
|
response: HttpcApiResponse(ServerStatus),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub opaque type Model {
|
pub opaque type Model {
|
||||||
Model(
|
Model(
|
||||||
env: Env,
|
env: Env,
|
||||||
errors: List(ApiError),
|
errors: List(HttpcApiError),
|
||||||
last_request: Option(Timestamp),
|
last_request: Option(Timestamp),
|
||||||
last_server_status: LastServerStatus,
|
last_server_status: LastServerStatus,
|
||||||
)
|
)
|
||||||
|
@ -83,7 +84,7 @@ pub opaque type Msg {
|
||||||
NoOp
|
NoOp
|
||||||
DismissErrors
|
DismissErrors
|
||||||
GetServerStatus
|
GetServerStatus
|
||||||
GotServerStatus(response: ApiResponse(ServerStatus))
|
GotServerStatus(response: HttpcApiResponse(ServerStatus))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn init() -> #(Model, List(fn() -> Msg)) {
|
fn init() -> #(Model, List(fn() -> Msg)) {
|
||||||
|
@ -105,7 +106,7 @@ fn update(model: Model, msg: Msg) -> #(Model, List(fn() -> Msg)) {
|
||||||
| Refreshing(prev_response)
|
| Refreshing(prev_response)
|
||||||
| Refreshed(response: prev_response, ..) -> 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) -> {
|
GotServerStatus(response) -> {
|
||||||
#(
|
#(
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import envoy
|
import envoy
|
||||||
import gleam/result
|
import gleam/result
|
||||||
import spacetraders_sdk.{
|
import spacetraders_models/account_token.{type AccountToken}
|
||||||
type AccountToken, type AgentToken, type TokenParseError,
|
import spacetraders_models/agent_token.{type AgentToken}
|
||||||
}
|
import spacetraders_models/token_parse_error.{type TokenParseError}
|
||||||
|
|
||||||
pub type Env {
|
pub type Env {
|
||||||
Env(account_token: AccountToken, agent_token: AgentToken)
|
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)) {
|
fn get_token(name: String, parse: fn(String) -> Result(token, TokenParseError)) {
|
||||||
get(name)
|
get(name)
|
||||||
|> result.then(fn(value) {
|
|> result.try(fn(value) {
|
||||||
parse(value) |> result.map_error(InvalidTokenVar(name:, error: _))
|
parse(value) |> result.map_error(InvalidTokenVar(name:, error: _))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_account_token() -> Result(AccountToken, EnvError) {
|
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) {
|
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) {
|
pub fn load_env() -> Result(Env, EnvError) {
|
||||||
|
|
Loading…
Reference in a new issue