/** * Sets the response {@code Content-Type} header, if it has not already been set. * * @param contentType The value of the {@code Content-Type} header * @return This */ default Response contentTypeIfNotSet(CharSequence contentType) { return contentTypeIfNotSet(() -> contentType); }
@SuppressWarnings("ThrowableResultOfMethodCallIgnored") @Override public void render(Context ctx, HealthCheckResults healthCheckResults) throws Exception { ByteBuf buffer = byteBufAllocator.buffer(); try (Writer writer = new OutputStreamWriter(new BufferedOutputStream(new ByteBufOutputStream(buffer)))) { healthCheckResults.writeTo(writer); } catch (Exception e) { buffer.release(); throw e; } ctx.getResponse() .contentTypeIfNotSet(HttpHeaderConstants.PLAIN_TEXT_UTF8) .status(healthCheckResults.isUnhealthy() ? 503 : 200) .send(buffer); } }
@Override public void render(Context context, JsonRender object) throws Exception { ObjectWriter writer = object.getObjectWriter(); if (writer == null) { writer = defaultObjectWriter; } ByteBuf buffer = context.get(ByteBufAllocator.class).buffer(); OutputStream outputStream = new ByteBufOutputStream(buffer); try { writer.writeValue(outputStream, object.getObject()); } catch (JsonProcessingException e) { buffer.release(); context.error(e); return; } context.getResponse() .contentTypeIfNotSet(HttpHeaderConstants.JSON) .send(buffer); }
public static void sendFile(Context context, Path file, BasicFileAttributes attributes) { Date date = new Date(attributes.lastModifiedTime().toMillis()); context.lastModified(date, () -> { final String ifNoneMatch = context.getRequest().getHeaders().get(HttpHeaderNames.IF_NONE_MATCH); Response response = context.getResponse(); if (ifNoneMatch != null && ifNoneMatch.trim().equals("*")) { response.status(NOT_MODIFIED.code()).send(); return; } response.contentTypeIfNotSet(() -> context.get(MimeTypes.class).getContentType(file.getFileName().toString())); response.getHeaders().set(HttpHeaderConstants.CONTENT_LENGTH, Long.toString(attributes.size())); try { response.sendFile(file); } catch (Exception e) { throw Exceptions.uncheck(e); } }); }
@Override public void render(Context ctx, JsonRender object) throws Exception { ObjectWriter writer = object.getObjectWriter(); if (writer == null) { writer = ctx.maybeGet(ObjectWriter.class) .orElseGet(() -> ctx.get(ObjectMapper.class).writer()); } Class<?> viewClass = object.getViewClass(); if (viewClass != null) { writer = writer.withView(viewClass); } ByteBuf buffer = ctx.get(ByteBufAllocator.class).buffer(); OutputStream outputStream = new ByteBufOutputStream(buffer); try { writer.writeValue(outputStream, object.getObject()); } catch (JsonProcessingException e) { buffer.release(); ctx.error(e); return; } ctx.getResponse() .contentTypeIfNotSet(HttpHeaderConstants.JSON) .send(buffer); }