package s3shared
import (
)
type ErrorComponents struct {
Code string `xml:"Code"`
Message string `xml:"Message"`
RequestID string `xml:"RequestId"`
HostID string `xml:"HostId"`
}
func ( io.Reader) (ErrorComponents, error) {
var ErrorComponents
if := xml.NewDecoder().Decode(&); != nil && != io.EOF {
return ErrorComponents{}, fmt.Errorf("error while deserializing xml error response : %w", )
}
return , nil
}
func ( io.Reader) (ErrorComponents, error) {
var struct {
string `xml:"Error>Code"`
string `xml:"Error>Message"`
string `xml:"RequestId"`
string `xml:"HostId"`
}
if := xml.NewDecoder().Decode(&); != nil && != io.EOF {
return ErrorComponents{}, fmt.Errorf("error while deserializing xml error response : %w", )
}
return ErrorComponents{
Code: .,
Message: .,
RequestID: .,
HostID: .,
}, nil
}
func ( io.Reader, ErrorResponseDeserializerOptions) (ErrorComponents, error) {
var ErrorComponents
var error
if .IsWrappedWithErrorTag {
, = GetWrappedErrorResponseComponents()
} else {
, = GetUnwrappedErrorResponseComponents()
}
if != nil {
return ErrorComponents{},
}
if .UseStatusCode && len(.Code) == 0 &&
len(.Message) == 0 {
:= http.StatusText(.StatusCode)
.Code = strings.Replace(, " ", "", -1)
.Message =
}
return , nil
}
type ErrorResponseDeserializerOptions struct {
UseStatusCode bool
StatusCode int
IsWrappedWithErrorTag bool
}