package gcl import ( "encoding/json" "fmt" "io" "net/http" ) // Download func (storage *Storage) Download(path string) ([]byte, error) { // Create HTTP Request request, err := http.NewRequest("GET", fmt.Sprintf("https://%s/%s/%s", storage.endpoint, storage.zoneName, path), nil) // Handle Error if err != nil { return nil, err } // Add Headers request.Header.Add("accept", "*/*") request.Header.Add("AccessKey", storage.accessKey) // Do Request response, err := http.DefaultClient.Do(request) // Handle Error if err != nil { return nil, err } // Close Response defer response.Body.Close() // Read Body body, err := io.ReadAll(response.Body) // Handle Error if err != nil { return nil, err } // Check Response if response.StatusCode/100 != 2 { // Response Data responseData := struct { HttpCode int `json:"HttpCode"` Message string `json:"Message"` }{} // Unmarshal Body err := json.Unmarshal(body, &responseData) // Handle Error if err != nil { return nil, err } return nil, fmt.Errorf("%d : %s", response.StatusCode, responseData.Message) } // Success return body, err }