@Override public String getText(Charset charset) { if (mediaType == null) { return byteBuf.toString(charset); } else { return byteBuf.toString(Charset.forName(mediaType.getCharset(charset.name()))); } }
private static boolean isFormAvailable(Request request, TypedData body) { HttpMethod method = request.getMethod(); return body != null && body.getContentType().isForm() && (method.isPost() || method.isPut()); }
@Override public void handle(Context context) throws Exception { boolean accepted = false; String requestType = context.getRequest().getContentType().getType(); if (requestType != null) { for (String contentType : contentTypes) { if (requestType.equals(contentType)) { accepted = true; break; } } } if (accepted) { context.next(); } else { context.clientError(HttpResponseStatus.UNSUPPORTED_MEDIA_TYPE.code()); } } }
@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)); } }
} else if (request.getContentType().isForm()) { ctx.parse(Form.class) .then(form -> {
@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)); }