zero: only leave public packages in pkg/zero (#4854)

This commit is contained in:
Denis Mishin 2023-12-12 14:24:37 -05:00 committed by GitHub
parent a6ae9d3f2d
commit b66634d1e6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 22 additions and 22 deletions

View file

@ -0,0 +1,42 @@
package apierror
import (
"fmt"
"net/http"
)
// RequestIDError is an error that wraps another error and includes the response ID
type RequestIDError struct {
Err error
ResponseID *string
}
// Error implements error for RequestIDError
func (e *RequestIDError) Error() string {
if e.ResponseID == nil {
return e.Err.Error()
}
return fmt.Sprintf("[x-response-id:%s]: %v", *e.ResponseID, e.Err)
}
// Unwrap implements errors.Unwrap for RequestIDError
func (e *RequestIDError) Unwrap() error {
return e.Err
}
// Is implements errors.Is for RequestIDError
func (e *RequestIDError) Is(err error) bool {
//nolint:errorlint
_, ok := err.(*RequestIDError)
return ok
}
// WithRequestID creates a new RequestIDError
func WithRequestID(err error, headers http.Header) *RequestIDError {
r := &RequestIDError{Err: err}
id := headers.Get("X-Response-Id")
if id != "" {
r.ResponseID = &id
}
return r
}