private static void returnJsonResponse(ObjectMapper mapper, RakamHttpRequest request, HttpResponseStatus status, Object apply)
{
FullHttpResponse response;
try {
if (apply instanceof Response) {
Response responseData = (Response) apply;
byte[] bytes = mapper.writeValueAsBytes(responseData.getData());
response = new DefaultFullHttpResponse(HTTP_1_1, responseData.getStatus(), Unpooled.wrappedBuffer(bytes));
if (responseData.getCookies() != null) {
response.headers().add(SET_COOKIE, STRICT.encode(responseData.getCookies()));
}
}
else {
final ByteBuf byteBuf = Unpooled.wrappedBuffer(mapper.writeValueAsString(apply).getBytes(UTF_8));
response = new DefaultFullHttpResponse(HTTP_1_1, status, byteBuf);
}
}
catch (JsonProcessingException e) {
LOGGER.error(e, "Couldn't serialize returned object");
throw new RuntimeException("couldn't serialize object", e);
}
response.headers().set(CONTENT_TYPE, "application/json; charset=utf-8");
request.response(response).end();
}