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  }