@@ -43,7 +43,9 @@ func Head(ctx context.Context, url, token string) error {
4343 switch response .StatusCode {
4444 case http .StatusOK :
4545 requestRemaining := response .Header .Get ("X-RateLimit-Remaining" )
46- logger .Log (ctx , slog .LevelDebug , "request remaining" , slog .String ("requestRemaining" , requestRemaining ))
46+ if requestRemaining != "" {
47+ logger .Log (ctx , slog .LevelDebug , "request remaining" , slog .String ("requestRemaining" , requestRemaining ))
48+ }
4749 return nil
4850
4951 case http .StatusTooManyRequests :
@@ -61,12 +63,20 @@ func Head(ctx context.Context, url, token string) error {
6163 continue
6264
6365 case http .StatusNotFound :
66+ logger .Log (ctx , slog .LevelDebug , "resource not found" , slog .String ("url" , url ))
6467 return fmt .Errorf ("not found" )
6568
6669 default :
70+ if response .StatusCode >= 500 && response .StatusCode < 600 {
71+ logger .Log (ctx , slog .LevelWarn , "received server error, trying again in 5 seconds" , slog .String ("status" , response .Status ))
72+ time .Sleep (5 * time .Second )
73+ continue
74+ }
75+
6776 return fmt .Errorf ("received unexpected status code %d with message: %v" , response .StatusCode , response .Body )
6877 }
6978 }
7079
80+ logger .Log (ctx , slog .LevelError , "max retries reached" )
7181 return fmt .Errorf ("max retries reached: %v" , maxRetries )
7282}
0 commit comments