in adapter/api/src/main/java/org/apache/rocketmq/eventbridge/adapter/api/converter/HttpEventConverter.java [203:245]
private HttpEventData getHttpEventData(ServerHttpRequest request, byte[] body, Map<String, String> headers,
String accountId, String token) {
HttpEventData httpEventData = new HttpEventData();
HashMap<String, String> dataHeaders = new HashMap<>();
headers.forEach((k, v) -> {
if (!DISCARD_FIELDS.contains(k)) {
dataHeaders.put(k, v);
}
});
Object bodyContent = new String(body);
HashMap<String, String> temp = new HashMap<>();
dataHeaders.forEach((k, v) -> {
temp.put(k.toLowerCase(), v);
});
try {
String contentType = temp.get("content-type");
if (StringUtils.isNotBlank(contentType)) {
MediaType type = MediaType.parse(contentType);
if (type.toString().contains("application/json")) {
bodyContent = new Gson().fromJson((String) bodyContent, new TypeToken<Map<String, ?>>() {
}.getType());
}
}
} catch (Exception e) {
log.warn("GenerateEBHttpEventData failed. Http content is not a valid json format. accountId={}, token={}, content-type={}",
accountId, token, temp.get("content-type"), e);
throw new EventBridgeException(JSON_ATTRIBUTE_INVALID);
}
httpEventData.setBody(bodyContent);
httpEventData.setHeaders(dataHeaders);
httpEventData.setHttpMethod(request.getMethod().toString());
httpEventData.setPath(request.getPath().pathWithinApplication().value());
HashMap<String, String> queryParam = new HashMap<>();
request.getQueryParams().forEach((k, v) -> {
if (!StringUtils.equals("token", k)) {
queryParam.put(k, v.get(0));
}
});
httpEventData.setQueryString(queryParam);
return httpEventData;
}