func reserveCache()

in http-cache-action/proxy/proxy.go [229:255]


func reserveCache(key string) (int, error) {
	requestUrl := getCacheApiUrl("caches")
	requestBody := fmt.Sprintf("{ \"key\": \"%s\", \"version\": \"%s\" }", key, calculateSHA256(key))
	request, _ := http.NewRequest("POST", requestUrl, bytes.NewBufferString(requestBody))
	request.Header.Set("Authorization", "Bearer "+token)
	request.Header.Set("User-Agent", "actions/cache")
	request.Header.Set("Content-Type", "application/json")
	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 -1, err
	}
	defer response.Body.Close()
	bodyBytes, err := ioutil.ReadAll(utfbom.SkipOnly(response.Body))
	if response.StatusCode >= 400 {
		return -1, fmt.Errorf("failed to reserve cache: %d", response.StatusCode)
	}

	var cacheResponse ReserveCacheResponse
	err = json.Unmarshal(bodyBytes, &cacheResponse)
	if err != nil {
		return -1, err
	}
	return cacheResponse.CacheId, nil
}