11package http_cache
22
33import (
4- "bufio"
54 "context"
65 "errors"
76 "fmt"
@@ -10,7 +9,6 @@ import (
109 "net/http"
1110 "runtime"
1211 "strconv"
13- "strings"
1412 "time"
1513
1614 "github.com/cirruslabs/cirrus-cli/internal/agent/client"
@@ -236,7 +234,7 @@ func (httpCache *HTTPCache) uploadCacheEntry(w http.ResponseWriter, r *http.Requ
236234 TaskIdentification : client .CirrusTaskIdentification ,
237235 CacheKey : cacheKey ,
238236 }
239- generateResp , err := client .CirrusClient .GenerateCacheUploadURL (context . Background (), & key )
237+ generateResp , err := client .CirrusClient .GenerateCacheUploadURL (r . Context (), & key )
240238 if err != nil {
241239 errorMsg := fmt .Sprintf ("Failed to initialized uploading of %s cache! %s" , cacheKey , err )
242240 slog .Error (errorMsg )
@@ -253,37 +251,16 @@ func (httpCache *HTTPCache) uploadCacheEntry(w http.ResponseWriter, r *http.Requ
253251 w .Write ([]byte (errorMsg ))
254252 return
255253 }
256- req , err := http .NewRequest ("PUT" , generateResp .Url , bufio .NewReader (r .Body ))
257- if err != nil {
258- slog .Error ("Cache upload failed" , "cache_key" , cacheKey , "err" , err )
259- w .WriteHeader (http .StatusInternalServerError )
260- return
261- }
262- req .Header .Set ("Content-Type" , "application/octet-stream" )
263- req .ContentLength = r .ContentLength
264- for k , v := range generateResp .GetExtraHeaders () {
265- req .Header .Set (k , v )
266- }
267- resp , err := httpCache .httpClient .Do (req )
268- if err != nil {
269- errorMsg := fmt .Sprintf ("Failed to proxy upload of %s cache! %s" , cacheKey , err )
270- slog .Error (errorMsg )
271- w .WriteHeader (http .StatusInternalServerError )
272- w .Write ([]byte (errorMsg ))
273- return
254+ urlInfo := storage.URLInfo {
255+ URL : generateResp .Url ,
256+ ExtraHeaders : generateResp .GetExtraHeaders (),
274257 }
275- if resp .StatusCode >= 400 {
276- slog .Error ("Failed to proxy upload of cache" , "cache_key" , cacheKey , "status" , resp .Status )
277-
278- var headersBuilder strings.Builder
279- req .Header .Write (& headersBuilder )
280- slog .Error ("Headers for PUT request" , "url" , generateResp .Url , "headers" , headersBuilder .String ())
281-
282- var responseBuilder strings.Builder
283- resp .Write (& responseBuilder )
284- slog .Error ("Failed response" , "response" , responseBuilder .String ())
258+ uploadResource := urlproxy.UploadResource {
259+ Body : r .Body ,
260+ ContentLength : r .ContentLength ,
261+ ResourceName : cacheKey ,
285262 }
286- w . WriteHeader ( resp . StatusCode )
263+ httpCache . proxy . ProxyUploadToURL ( r . Context (), w , & urlInfo , uploadResource )
287264}
288265
289266func deleteCacheEntry (w http.ResponseWriter , cacheKey string ) {
0 commit comments