package main import ( "fmt" "os" "strings" ) func fatal(msg string) { fmt.Fprintln(os.Stderr, msg) os.Exit(1) } func usage() { fatal(`Usage: auth-rt token auth-rt session auth-rt client-config auth-rt request [--body JSON] [--api-base URL]`) } func main() { args := os.Args[1:] if len(args) == 0 { usage() } command := args[0] switch command { case "token": cfg := loadConfig() session, err := fetchSession(cfg) if err != nil { fatal(err.Error()) } fmt.Printf(`{"token":"%s"}`, session.AccessToken) fmt.Println() case "session": cfg := loadConfig() session, err := fetchSession(cfg) if err != nil { fatal(err.Error()) } printJSON(session) case "client-config": cfg := loadConfig() config, err := fetchClientConfig(cfg) if err != nil { fatal(err.Error()) } printJSON(config) case "request": if len(args) < 3 { fatal("request requires ") } method := strings.ToUpper(args[1]) path := args[2] var body, apiBase string for i := 3; i < len(args); i++ { if args[i] == "--body" && i+1 < len(args) { i++ body = args[i] } else if args[i] == "--api-base" && i+1 < len(args) { i++ apiBase = args[i] } } validMethods := map[string]bool{ "GET": true, "POST": true, "PUT": true, "PATCH": true, "DELETE": true, "HEAD": true, } if !validMethods[method] { fatal("Invalid method: " + method) } cfg := loadConfig() if apiBase != "" { cfg.APIBase = apiBase } result, err := requestWithRetry(cfg, method, path, body) if err != nil { fatal(err.Error()) } printJSON(result) default: fatal("Unknown command: " + command) } }