github.com/polygon-io/client-go@v1.16.4/.polygon/rest.go (about) 1 package main 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "io" 7 "log" 8 "net/http" 9 "net/url" 10 "os" 11 ) 12 13 func main() { 14 if len(os.Args) < 2 { 15 log.Fatal("expected a URI for fetching the REST spec") 16 } 17 uri := os.Args[1] 18 19 var body []byte 20 if isURL(uri) { 21 resp, err := http.Get(uri) 22 if err != nil { 23 log.Fatal(err) 24 } 25 defer resp.Body.Close() 26 27 body, err = io.ReadAll(resp.Body) 28 if err != nil { 29 log.Fatal(err) 30 } 31 } else { 32 log.Fatal("expected arg to be a valid URI") 33 } 34 35 var out bytes.Buffer 36 err := json.Indent(&out, body, "", " ") 37 if err != nil { 38 log.Fatal(err) 39 } 40 err = os.WriteFile(".polygon/rest.json", out.Bytes(), 0644) 41 if err != nil { 42 log.Fatal(err) 43 } 44 } 45 46 func isURL(uri string) bool { 47 u, err := url.Parse(uri) 48 return err == nil && u.Scheme != "" && u.Host != "" 49 }