Skip to content

Commit 66b2791

Browse files
committed
separate utils for s3 and s3control
1 parent 4c0eaff commit 66b2791

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

codegen/smithy-aws-go-codegen/src/main/java/software/amazon/smithy/aws/go/codegen/XMLProtocolUtils.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -275,10 +275,12 @@ public static void writeXmlErrorMessageCodeDeserializer(ProtocolGenerator.Genera
275275

276276
if (requiresS3Customization(service)) {
277277
writer.addUseImports(AwsCustomGoDependency.S3_SHARED_CUSTOMIZATION);
278-
String getErrorComponents = String.format("errorComponents, err := "
279-
+ "s3shared.GetErrorResponseComponents(errorBody, response.StatusCode, %s)",
280-
isS3Service(service));
281-
writer.write(getErrorComponents);
278+
if (isS3Service(service)){
279+
writer.write("errorComponents, err := s3shared.GetS3ErrorResponseComponents(errorBody, response.StatusCode)");
280+
} else {
281+
// s3 control
282+
writer.write("errorComponents, err := s3shared.GetErrorResponseComponents(errorBody)");
283+
}
282284

283285
writer.write("if err != nil { return err }");
284286

service/internal/s3shared/xml_utils.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)