97 lines
1.7 KiB
Go
97 lines
1.7 KiB
Go
|
|
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 <METHOD> <path> [--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> <path>")
|
||
|
|
}
|
||
|
|
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)
|
||
|
|
}
|
||
|
|
}
|