List of usage examples for io.netty.handler.codec.http HttpResponseStatus NOT_EXTENDED
HttpResponseStatus NOT_EXTENDED
To view the source code for io.netty.handler.codec.http HttpResponseStatus NOT_EXTENDED.
Click Source Link
From source file:io.urmia.api.handler.RestApiHandler.java
License:Open Source License
@Override protected void channelRead0(ChannelHandlerContext ctx, HttpObject msg) throws Exception { if (msg instanceof HttpRequest) { if (requestState != RequestState.EXPECT_REQUEST) { sendError(ctx, ERROR_BAD_REQUEST); return; }/* ww w. ja v a2 s . c o m*/ request = (HttpRequest) msg; log.info("received HttpRequest: {} {}", request.getMethod(), request.getUri()); final ObjectRequest r; try { r = new ObjectRequest(request); } catch (ExceptionInInitializerError e) { log.warn("unable to parse the request into a command: {}", request.getUri()); return; } objectRequest = r; httpRequest = request; if (HttpMethod.PUT.equals(request.getMethod())) { if (objectRequest.isNotDirectory()) // make dir request setupProxyToPUT(ctx, objectRequest); requestState = RequestState.EXPECT_CONTENT_OR_LAST; } else { requestState = RequestState.EXPECT_LAST; ctx.read(); } return; } if (objectRequest == null) { String uri = request == null ? "" : request.getUri(); log.warn("not expecting an empty objectRequest. parse error maybe: {}", uri); ByteBuf body = request == null || request.getMethod().equals(HttpMethod.HEAD) ? null : errorBody("ResourceNotFoundError", uri + " does not exist"); sendError(ctx, HttpResponseStatus.NOT_FOUND, body); return; } if (msg instanceof HttpContent) { if (requestState != RequestState.EXPECT_LAST && requestState != RequestState.EXPECT_CONTENT_OR_LAST) { log.warn("not expecting LAST or CONTENT, requestState: {}", requestState); sendError(ctx, HttpResponseStatus.NOT_EXTENDED); return; } final boolean last = msg instanceof LastHttpContent; final boolean emptyLast = last && msg == LastHttpContent.EMPTY_LAST_CONTENT; if (proxyMode && !emptyLast) // todo: the emptyLast was added for mln ctx.fireChannelRead(msg); // example of reading only if at the end if (last) { log.debug("received LastHttpContent: {}", msg); requestState = RequestState.EXPECT_REQUEST; final HttpRequest request = httpRequest; if (HttpMethod.HEAD.equals(request.getMethod())) { handleHEAD(ctx, objectRequest); return; } if (HttpMethod.GET.equals(request.getMethod())) { handleGET(ctx, objectRequest); return; } if (HttpMethod.DELETE.equals(request.getMethod())) { handleDELETE(ctx, objectRequest); return; } if (HttpMethod.PUT.equals(request.getMethod())) { if (proxyMode) log.info("finished file upload: {}", objectRequest); else handlePUTmkdir(ctx, objectRequest); return; } log.warn("unknown request: {}", request); sendError(ctx, HttpResponseStatus.BAD_REQUEST); } return; } log.warn("unexpected msg type: {}", msg); sendError(ctx, HttpResponseStatus.BAD_REQUEST); }