gleam-spacetraders-sdk/test/spacetraders_sdk_test/env.gleam
Lily Rose d5e6cbc95f
Some checks are pending
test / test (push) Waiting to run
Switch from dot_env to envoy
2025-07-08 16:06:26 +10:00

48 lines
1.3 KiB
Gleam

import envoy
import gleam/result
import spacetraders_sdk.{
type AccountToken, type AgentToken, type TokenParseError,
}
pub type Env {
Env(account_token: AccountToken, agent_token: AgentToken)
}
pub type EnvError {
MissingVar(name: String)
InvalidTokenVar(name: String, error: TokenParseError)
}
fn get(name: String) -> Result(String, EnvError) {
envoy.get(name)
|> result.replace_error(MissingVar(name:))
}
fn get_token(name: String, parse: fn(String) -> Result(token, TokenParseError)) {
get(name)
|> result.then(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)
}
pub fn get_agent_token() -> Result(AgentToken, EnvError) {
get_token("AGENT_TOKEN", spacetraders_sdk.parse_agent_token)
}
pub fn load_env() -> Result(Env, EnvError) {
use account_token <- result.try(get_account_token())
use agent_token <- result.try(get_agent_token())
Ok(Env(account_token:, agent_token:))
}
pub fn load_env_unsafe() -> Env {
let assert Ok(account_token) = get_account_token()
as "Missing or invalid account token"
let assert Ok(agent_token) = get_agent_token()
as "Missing or invalid agent token"
Env(account_token:, agent_token:)
}