@Override public MediaType getContentType() { return typedData.getContentType(); }
@Override public InputStream getInputStream() { return typedData.getInputStream(); } }
@Override public String getText() { return typedData.getText(); }
.map(response -> { TypedData responseBody = response.getBody(); ByteBuf responseBuffer = responseBody.getBuffer(); ByteBuf heapResponseBodyBuffer = unreleasableBuffer(responseBuffer.isDirect() ? TestByteBufAllocators.LEAKING_UNPOOLED_HEAP.heapBuffer(responseBuffer.readableBytes()).writeBytes(responseBuffer) : responseBuffer.retain()); response.getStatus(), response.getHeaders(), new ByteBufBackedTypedData(heapResponseBodyBuffer, responseBody.getContentType()) ); })
@Override public <T> T parse(Context context, TypedData body, Parse<T, JsonParseOpts> parse) throws IOException { if (!body.getContentType().isJson()) { return null; } JsonParseOpts opts = parse.getOpts().orElse(DefaultJsonParseOpts.INSTANCE); TypeToken<T> type = parse.getType(); ObjectMapper objectMapper = opts.getObjectMapper().orElseGet(() -> context.get(ObjectMapper.class)); InputStream inputStream = body.getInputStream(); if (type.equals(JSON_NODE_TYPE)) { return cast(objectMapper.readTree(inputStream)); } else { return objectMapper.readValue(inputStream, toJavaType(type, objectMapper)); } }
@Override public ByteBuf getBuffer() { return typedData.getBuffer(); }
@Override public byte[] getBytes() { return typedData.getBytes(); }
@Override public void writeTo(OutputStream outputStream) throws IOException { typedData.writeTo(outputStream); }
HttpMethod method = io.netty.handler.codec.http.HttpMethod.valueOf(request.getMethod().getName()); HttpRequest nettyRequest = new DefaultHttpRequest(HttpVersion.HTTP_1_1, method, request.getUri()); nettyRequest.headers().add(HttpHeaderNames.CONTENT_TYPE, body.getContentType().toString()); HttpPostRequestDecoder decoder = new HttpPostRequestDecoder(nettyRequest); HttpContent content = new DefaultHttpContent(body.getBuffer());
@Override public <T, O> Promise<T> parse(Parse<T, O> parse) { return getRequest().getBody() .map(b -> { try { return parse(b, parse); } finally { b.getBuffer().release(); } }); }
@Override public String getText(Charset charset) { return typedData.getText(charset); }
@Override public <T> T parse(Context context, TypedData body, Parse<T, JsonParseOpts> parse) throws IOException { JsonParseOpts opts = parse.getOpts(); TypeToken<T> type = parse.getType(); ObjectMapper objectMapper = getObjectMapper(opts); InputStream inputStream = body.getInputStream(); if (type.equals(JSON_NODE_TYPE)) { return cast(objectMapper.readTree(inputStream)); } else { return objectMapper.readValue(inputStream, toJavaType(type, objectMapper)); } }
private static boolean isFormAvailable(Request request, TypedData body) { HttpMethod method = request.getMethod(); return body != null && body.getContentType().isForm() && (method.isPost() || method.isPut()); }
@Override public String postText(String path) { post(path); return response.getBody().getText(); }
@Override public void handle(Context context) throws Exception { final Registry commandRegistry = context.join(registry); final RegistryBuilder registryBuilder = Registry.builder(); Receiver receiver = new RatpackReceiver(chain -> new DelegatingCommandDelegate(registryBuilder, commandRegistry) { @Override public void clearRegistry() { registryReference.set(null); } }); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); context.getRequest().getBody() .blockingOp(body -> receiver.execute(body.getInputStream(), outputStream)) .then(body -> { if (registryBuilder.size() > 0) { Registry newRegistry = registryBuilder.build(); registryReference.set(newRegistry); } context.getResponse().send(ContentType.RESULT.getValue(), outputStream.toByteArray()); }); } }
@Override public <T, O> T parse(TypedData body, Parse<T, O> parse) throws Exception { Function<Parser<?>, T> parserPredicate; List<Parser<?>> parsers = Lists.newArrayList(); if (parse.getOpts().isPresent()) { parserPredicate = parser -> { if (parser.getOptsType().isInstance(parse.getOpts().get())) { parsers.add(parser); Parser<O> cast = Types.cast(parser); return cast.parse(DefaultContext.this, body, parse); } return null; }; } else { parserPredicate = parser -> { parsers.add(parser); Parser<O> cast = Types.cast(parser); return cast.parse(DefaultContext.this, body, parse); }; } return joinedRegistry .first(PARSER_TYPE_TOKEN, parserPredicate) .orElseThrow(() -> new NoSuchParserException(parse.getType(), parse.getOpts().orElse(null), body.getContentType().getType(), parsers)); }
@Override public String getText(String path) { return get(path).getBody().getText(); }
@Override public String deleteText(String path) { return delete(path).getBody().getText(); }
@Override public String optionsText(String path) { return options(path).getBody().getText(); }
@Override public String putText(String path) { return put(path).getBody().getText(); }