mirror of
https://github.com/multipleof4/ntfy.git
synced 2026-10-08 21:05:21 +00:00
Fix bug
This commit is contained in:
+7
-7
@@ -82,7 +82,7 @@ func (c *Client) GetObject(ctx context.Context, key string) (io.ReadCloser, int6
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, 0, fmt.Errorf("s3: GetObject: %w", err)
|
return nil, 0, fmt.Errorf("s3: GetObject: %w", err)
|
||||||
}
|
}
|
||||||
if resp.StatusCode/100 != 2 {
|
if !isHTTPSuccess(resp) {
|
||||||
err := parseError(resp)
|
err := parseError(resp)
|
||||||
resp.Body.Close()
|
resp.Body.Close()
|
||||||
return nil, 0, err
|
return nil, 0, err
|
||||||
@@ -126,7 +126,7 @@ func (c *Client) DeleteObjects(ctx context.Context, keys []string) error {
|
|||||||
return fmt.Errorf("s3: DeleteObjects: %w", err)
|
return fmt.Errorf("s3: DeleteObjects: %w", err)
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
if resp.StatusCode/100 != 2 {
|
if !isHTTPSuccess(resp) {
|
||||||
return parseError(resp)
|
return parseError(resp)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -176,7 +176,7 @@ func (c *Client) ListObjects(ctx context.Context, continuationToken string, maxK
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("s3: ListObjects read: %w", err)
|
return nil, fmt.Errorf("s3: ListObjects read: %w", err)
|
||||||
}
|
}
|
||||||
if resp.StatusCode/100 != 2 {
|
if !isHTTPSuccess(resp) {
|
||||||
return nil, parseErrorFromBytes(resp.StatusCode, respBody)
|
return nil, parseErrorFromBytes(resp.StatusCode, respBody)
|
||||||
}
|
}
|
||||||
var result listObjectsV2Response
|
var result listObjectsV2Response
|
||||||
@@ -228,7 +228,7 @@ func (c *Client) putObject(ctx context.Context, key string, body io.Reader, size
|
|||||||
return fmt.Errorf("s3: PutObject: %w", err)
|
return fmt.Errorf("s3: PutObject: %w", err)
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
if resp.StatusCode/100 != 2 {
|
if !isHTTPSuccess(resp) {
|
||||||
return parseError(resp)
|
return parseError(resp)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@@ -288,7 +288,7 @@ func (c *Client) initiateMultipartUpload(ctx context.Context, fullKey string) (s
|
|||||||
return "", fmt.Errorf("s3: InitiateMultipartUpload: %w", err)
|
return "", fmt.Errorf("s3: InitiateMultipartUpload: %w", err)
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
if resp.StatusCode/100 != 2 {
|
if !isHTTPSuccess(resp) {
|
||||||
return "", parseError(resp)
|
return "", parseError(resp)
|
||||||
}
|
}
|
||||||
respBody, err := io.ReadAll(io.LimitReader(resp.Body, maxResponseBytes))
|
respBody, err := io.ReadAll(io.LimitReader(resp.Body, maxResponseBytes))
|
||||||
@@ -316,7 +316,7 @@ func (c *Client) uploadPart(ctx context.Context, fullKey, uploadID string, partN
|
|||||||
return "", fmt.Errorf("s3: UploadPart: %w", err)
|
return "", fmt.Errorf("s3: UploadPart: %w", err)
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
if resp.StatusCode/100 != 2 {
|
if !isHTTPSuccess(resp) {
|
||||||
return "", parseError(resp)
|
return "", parseError(resp)
|
||||||
}
|
}
|
||||||
etag := resp.Header.Get("ETag")
|
etag := resp.Header.Get("ETag")
|
||||||
@@ -347,7 +347,7 @@ func (c *Client) completeMultipartUpload(ctx context.Context, fullKey, uploadID
|
|||||||
return fmt.Errorf("s3: CompleteMultipartUpload: %w", err)
|
return fmt.Errorf("s3: CompleteMultipartUpload: %w", err)
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
if resp.StatusCode/100 != 2 {
|
if !isHTTPSuccess(resp) {
|
||||||
return parseError(resp)
|
return parseError(resp)
|
||||||
}
|
}
|
||||||
// Read response body to check for errors (S3 can return 200 with an error body)
|
// Read response body to check for errors (S3 can return 200 with an error body)
|
||||||
|
|||||||
@@ -154,6 +154,10 @@ func uriEncode(s string) string {
|
|||||||
return buf.String()
|
return buf.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func isHTTPSuccess(resp *http.Response) bool {
|
||||||
|
return resp.StatusCode/100 == 2
|
||||||
|
}
|
||||||
|
|
||||||
func sha256Hex(data []byte) string {
|
func sha256Hex(data []byte) string {
|
||||||
h := sha256.Sum256(data)
|
h := sha256.Sum256(data)
|
||||||
return hex.EncodeToString(h[:])
|
return hex.EncodeToString(h[:])
|
||||||
|
|||||||
+1
-1
@@ -603,7 +603,7 @@ func (s *Server) handleInternal(w http.ResponseWriter, r *http.Request, v *visit
|
|||||||
return s.ensureWebEnabled(s.handleStatic)(w, r, v)
|
return s.ensureWebEnabled(s.handleStatic)(w, r, v)
|
||||||
} else if r.Method == http.MethodGet && docsRegex.MatchString(r.URL.Path) {
|
} else if r.Method == http.MethodGet && docsRegex.MatchString(r.URL.Path) {
|
||||||
return s.ensureWebEnabled(s.handleDocs)(w, r, v)
|
return s.ensureWebEnabled(s.handleDocs)(w, r, v)
|
||||||
} else if (r.Method == http.MethodGet || r.Method == http.MethodHead) && fileRegex.MatchString(r.URL.Path) && s.config.AttachmentCacheDir != "" {
|
} else if (r.Method == http.MethodGet || r.Method == http.MethodHead) && fileRegex.MatchString(r.URL.Path) && s.fileCache != nil {
|
||||||
return s.limitRequests(s.handleFile)(w, r, v)
|
return s.limitRequests(s.handleFile)(w, r, v)
|
||||||
} else if r.Method == http.MethodOptions {
|
} else if r.Method == http.MethodOptions {
|
||||||
return s.limitRequests(s.handleOptions)(w, r, v) // Should work even if the web app is not enabled, see #598
|
return s.limitRequests(s.handleOptions)(w, r, v) // Should work even if the web app is not enabled, see #598
|
||||||
|
|||||||
Reference in New Issue
Block a user