MCPcopy
hub / github.com/ContainerSSH/ContainerSSH / getLatestGoSwaggerURL

Function getLatestGoSwaggerURL

cmd/swagger/main.go:59–99  ·  view source on GitHub ↗
(client *http.Client, file string)

Source from the content-addressed store, hash-verified

57}
58
59func getLatestGoSwaggerURL(client *http.Client, file string) string {
60 url := "https://api.github.com/repos/go-swagger/go-swagger/releases/latest"
61
62 jsonRequest, err := http.NewRequest("GET", url, nil)
63 if err != nil {
64 log.Fatalf("%v", err)
65 }
66 if os.Getenv("GITHUB_TOKEN") != "" {
67 jsonRequest.Header.Add("authorization", "bearer "+os.Getenv("GITHUB_TOKEN"))
68 }
69
70 jsonResponse, err := client.Do(jsonRequest)
71 if err != nil {
72 log.Fatalf("failed to download information about the latest go-swagger release (%v)", err)
73 }
74 defer func() {
75 _ = jsonResponse.Body.Close()
76 }()
77
78 if jsonResponse.StatusCode != 200 {
79 log.Fatalf("invalid HTTP response code for release query (%s)", jsonResponse.Status)
80 }
81
82 releaseResponse := &GitHubReleaseResponse{}
83 err = json.NewDecoder(jsonResponse.Body).Decode(releaseResponse)
84 if err != nil {
85 log.Fatalf("failed to decode github release data (%v)", err)
86 }
87
88 url = ""
89 for _, asset := range releaseResponse.Assets {
90 log.Printf("Asset: %s | %s", asset.Name, asset.BrowserDownloadUrl)
91 if asset.Name == file {
92 url = asset.BrowserDownloadUrl
93 }
94 }
95 if url == "" {
96 log.Fatalf("failed to find URL for go-swagger executable")
97 }
98 return url
99}
100
101func downloadGoSwaggerBinary(url string, client *http.Client) []byte {
102 binaryRequest, err := http.NewRequest("GET", url, nil)

Callers 1

mainFunction · 0.85

Calls 4

FatalfMethod · 0.80
AddMethod · 0.65
CloseMethod · 0.65
DecodeMethod · 0.65

Tested by

no test coverage detected