mirror of
https://github.com/Noooste/garage-ui.git
synced 2026-08-08 12:53:13 +00:00
24 lines
854 B
Go
24 lines
854 B
Go
// Package apierr translates upstream (Garage Admin API, S3/MinIO) errors into
|
|
// backend API error responses with correct HTTP status codes and stable codes.
|
|
package apierr
|
|
|
|
import "fmt"
|
|
|
|
// UpstreamError is a typed error describing a failure reported by an upstream
|
|
// service. Returned from the services layer and consumed by handlers via Map
|
|
// or Respond.
|
|
type UpstreamError struct {
|
|
HTTPStatus int
|
|
Code string // upstream code, e.g. "BucketNotEmpty", "NoSuchKey"
|
|
Message string // human-readable upstream message
|
|
Source string // "garage" or "s3"
|
|
Details map[string]string // optional: region, path, bucket, key
|
|
}
|
|
|
|
func (e *UpstreamError) Error() string {
|
|
if e.Code == "" {
|
|
return fmt.Sprintf("%s: %s", e.Source, e.Message)
|
|
}
|
|
return fmt.Sprintf("%s %s: %s", e.Source, e.Code, e.Message)
|
|
}
|