@@ -18,19 +18,28 @@ type ErrorComponents struct {
1818}
1919
2020// GetErrorResponseComponents returns the error fields from an xml error response body
21- func GetErrorResponseComponents (r io.Reader , statusCode int , isS3service bool ) (ErrorComponents , error ) {
21+ func GetErrorResponseComponents (r io.Reader ) (ErrorComponents , error ) {
2222 var errComponents ErrorComponents
2323 if err := xml .NewDecoder (r ).Decode (& errComponents ); err != nil && err != io .EOF {
2424 return ErrorComponents {}, fmt .Errorf ("error while deserializing xml error response : %w" , err )
2525 }
26+ return errComponents , nil
27+ }
28+
29+ // GetS3ErrorResponseComponents returns the error fields from an S3 xml error response body.
30+ // If an error code or message is not retrieved, it is derived from the http status code
31+ func GetS3ErrorResponseComponents (r io.Reader , statusCode int ) (ErrorComponents , error ) {
32+ errComponents , err := GetErrorResponseComponents (r )
33+ if err != nil {
34+ return ErrorComponents {}, err
35+ }
2636
2737 // for S3 service, we derive err code and message, if none is found
28- if isS3service && len (errComponents .Code ) == 0 && len (errComponents .Message ) == 0 {
38+ if len (errComponents .Code ) == 0 && len (errComponents .Message ) == 0 {
2939 // derive code and message from status code
3040 statusText := http .StatusText (statusCode )
3141 errComponents .Code = strings .Replace (statusText , " " , "" , - 1 )
3242 errComponents .Message = statusText
3343 }
34-
3544 return errComponents , nil
3645}
0 commit comments