Skip to content

Commit c5dfb3c

Browse files
committed
API change to ecpWebService #281
1 parent 8b36f14 commit c5dfb3c

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

grails-app/services/au/org/ala/ecodata/forms/EcpWebService.groovy

+19-11
Original file line numberDiff line numberDiff line change
@@ -618,20 +618,16 @@ class EcpWebService {
618618

619619
ResponseBody responseBody = response.body()
620620
okhttp3.MediaType respContentType = responseBody.contentType()
621-
String subType = respContentType.subtype()?.toLowerCase()
621+
String mediaType = respContentType.type()?.toLowerCase()
622622
def responseData
623-
624-
switch (subType) {
625-
case "json":
623+
if (isTextBased(mediaType)) {
624+
responseData = responseBody.string()
625+
if (mediaType.contains('json')) {
626626
ObjectMapper objectMapper = new ObjectMapper()
627627
responseData = objectMapper.readValue(responseBody.string(), Object)
628-
break
629-
case "text":
630-
responseData = responseBody.string()
631-
break
632-
default:
633-
responseData = responseBody.byteStream()
634-
break
628+
}
629+
} else {
630+
responseData = responseBody.byteStream()
635631
}
636632

637633
result.statusCode = result.status = response.code()
@@ -645,6 +641,18 @@ class EcpWebService {
645641
return result
646642
}
647643

644+
private static boolean isTextBased(String contentType) {
645+
if (!contentType) {
646+
log.error("Missing content type")
647+
return false
648+
}
649+
String contentTypeLower = contentType.toLowerCase()
650+
return contentTypeLower.contains('json') ||
651+
contentTypeLower.contains('text') ||
652+
contentTypeLower.contains('xml') ||
653+
contentTypeLower.contains('graphql')
654+
}
655+
648656
/**
649657
* Forwards a HTTP multipart/form-data request to ecodata.
650658
* @param url the URL to forward to.

0 commit comments

Comments
 (0)