in http-cache-action/proxy/proxy.go [109:146]
func findCacheLocation(key string) (string, error) {
resource := fmt.Sprintf("cache?keys=%s&version=%s", key, calculateSHA256(key))
requestUrl := getCacheApiUrl(resource)
request, _ := http.NewRequest("GET", requestUrl, nil)
request.Header.Set("Authorization", "Bearer "+token)
request.Header.Set("User-Agent", "actions/cache")
request.Header.Set("Accept", "application/json;api-version=6.0-preview.1")
request.Header.Set("Accept-Charset", "utf-8")
response, err := httpClient.Do(request)
if err != nil {
return "", err
}
if response.StatusCode == 404 {
return "", nil
}
if response.StatusCode == 204 {
// no content
return "", nil
}
defer response.Body.Close()
bodyBytes, err := ioutil.ReadAll(utfbom.SkipOnly(response.Body))
if response.StatusCode >= 400 {
log.Printf("Failed to download key %s: %d %s\n", key, response.StatusCode, string(bodyBytes))
return "", fmt.Errorf("failed to get location: %d", response.StatusCode)
}
cacheResponse := GetCacheResponse{}
err = json.NewDecoder(bytes.NewReader(bodyBytes)).Decode(&cacheResponse)
if err != nil {
log.Println(string(bodyBytes))
return "", err
}
if cacheResponse.ArchiveLocation == "" {
log.Println(string(bodyBytes))
}
return cacheResponse.ArchiveLocation, nil
}