List of usage examples for io.netty.handler.codec.http QueryStringDecoder parameters
public Map<String, List<String>> parameters()
From source file:io.knotx.http.UriHelper.java
License:Apache License
public static MultiMap getParams(String uri) { QueryStringDecoder queryStringDecoder = new QueryStringDecoder(uri); Map<String, List<String>> queryParams = queryStringDecoder.parameters(); io.vertx.core.MultiMap params = io.vertx.core.MultiMap.caseInsensitiveMultiMap(); if (!queryParams.isEmpty()) { for (Map.Entry<String, List<String>> entry : queryParams.entrySet()) { params.add(entry.getKey(), entry.getValue()); }/*w w w. j a va2 s . com*/ } return MultiMap.newInstance(params); }
From source file:io.liveoak.container.protocols.http.HttpResourceRequestDecoder.java
License:Open Source License
@Override protected void decode(ChannelHandlerContext ctx, DefaultHttpRequest msg, List<Object> out) throws Exception { URI uri = new URI(msg.getUri()); String query = uri.getRawQuery(); if (query == null) { query = "?"; } else {//from w w w .j av a 2 s . c o m query = "?" + query; } QueryStringDecoder decoder = new QueryStringDecoder(query); String path = uri.getPath(); int lastDotLoc = path.lastIndexOf('.'); String extension = null; if (lastDotLoc > 0) { extension = path.substring(lastDotLoc + 1); } String acceptHeader = msg.headers().get(HttpHeaders.Names.ACCEPT); if (acceptHeader == null) { acceptHeader = "application/json"; } MediaTypeMatcher mediaTypeMatcher = new DefaultMediaTypeMatcher(acceptHeader, extension); ResourceParams params = DefaultResourceParams.instance(decoder.parameters()); // for cases when content is preset, and bypasses HttpRequestBodyHandler ByteBuf content = null; if (msg instanceof DefaultFullHttpRequest) { content = ((DefaultFullHttpRequest) msg).content().retain(); } if (msg.getMethod().equals(HttpMethod.POST)) { String contentTypeHeader = msg.headers().get(HttpHeaders.Names.CONTENT_TYPE); MediaType contentType = new MediaType(contentTypeHeader); out.add(new DefaultResourceRequest.Builder(RequestType.CREATE, new ResourcePath(path)) .resourceParams(params).mediaTypeMatcher(mediaTypeMatcher) .requestAttribute(HttpHeaders.Names.AUTHORIZATION, msg.headers().get(HttpHeaders.Names.AUTHORIZATION)) .requestAttribute(HttpHeaders.Names.CONTENT_TYPE, contentType) .requestAttribute(HTTP_REQUEST, msg) .resourceState(new DefaultLazyResourceState(codecManager, contentType, content)).build()); } else if (msg.getMethod().equals(HttpMethod.GET)) { out.add(new DefaultResourceRequest.Builder(RequestType.READ, new ResourcePath(path)) .resourceParams(params).mediaTypeMatcher(mediaTypeMatcher) .requestAttribute(HttpHeaders.Names.AUTHORIZATION, msg.headers().get(HttpHeaders.Names.AUTHORIZATION)) .requestAttribute(HttpHeaders.Names.ACCEPT, new MediaType(acceptHeader)) .requestAttribute(HTTP_REQUEST, msg).pagination(decodePagination(params)) .returnFields(decodeReturnFields(params)).sorting(decodeSorting(params)).build()); } else if (msg.getMethod().equals(HttpMethod.PUT)) { String contentTypeHeader = msg.headers().get(HttpHeaders.Names.CONTENT_TYPE); MediaType contentType = new MediaType(contentTypeHeader); out.add(new DefaultResourceRequest.Builder(RequestType.UPDATE, new ResourcePath(path)) .resourceParams(params).mediaTypeMatcher(mediaTypeMatcher) .requestAttribute(HttpHeaders.Names.AUTHORIZATION, msg.headers().get(HttpHeaders.Names.AUTHORIZATION)) .requestAttribute(HttpHeaders.Names.CONTENT_TYPE, contentType) .requestAttribute(HTTP_REQUEST, msg) .resourceState(new DefaultLazyResourceState(codecManager, contentType, content)).build()); } else if (msg.getMethod().equals(HttpMethod.DELETE)) { out.add(new DefaultResourceRequest.Builder(RequestType.DELETE, new ResourcePath(path)) .resourceParams(params).mediaTypeMatcher(mediaTypeMatcher) .requestAttribute(HttpHeaders.Names.AUTHORIZATION, msg.headers().get(HttpHeaders.Names.AUTHORIZATION)) .requestAttribute(HttpHeaders.Names.ACCEPT, new MediaType(acceptHeader)) .requestAttribute(HTTP_REQUEST, msg).build()); } }
From source file:io.netty.example.http.upload.HttpUploadServerHandler.java
License:Apache License
@Override public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) throws Exception { if (msg instanceof HttpRequest) { HttpRequest request = this.request = (HttpRequest) msg; URI uri = new URI(request.uri()); if (!uri.getPath().startsWith("/form")) { // Write Menu writeMenu(ctx);//from w ww .jav a2s .c o m return; } responseContent.setLength(0); responseContent.append("WELCOME TO THE WILD WILD WEB SERVER\r\n"); responseContent.append("===================================\r\n"); responseContent.append("VERSION: " + request.protocolVersion().text() + "\r\n"); responseContent.append("REQUEST_URI: " + request.uri() + "\r\n\r\n"); responseContent.append("\r\n\r\n"); // new getMethod for (Entry<String, String> entry : request.headers()) { responseContent.append("HEADER: " + entry.getKey() + '=' + entry.getValue() + "\r\n"); } responseContent.append("\r\n\r\n"); // new getMethod Set<Cookie> cookies; String value = request.headers().get(HttpHeaderNames.COOKIE); if (value == null) { cookies = Collections.emptySet(); } else { cookies = ServerCookieDecoder.STRICT.decode(value); } for (Cookie cookie : cookies) { responseContent.append("COOKIE: " + cookie + "\r\n"); } responseContent.append("\r\n\r\n"); QueryStringDecoder decoderQuery = new QueryStringDecoder(request.uri()); Map<String, List<String>> uriAttributes = decoderQuery.parameters(); for (Entry<String, List<String>> attr : uriAttributes.entrySet()) { for (String attrVal : attr.getValue()) { responseContent.append("URI: " + attr.getKey() + '=' + attrVal + "\r\n"); } } responseContent.append("\r\n\r\n"); // if GET Method: should not try to create an HttpPostRequestDecoder if (HttpMethod.GET.equals(request.method())) { // GET Method: should not try to create an HttpPostRequestDecoder // So stop here responseContent.append("\r\n\r\nEND OF GET CONTENT\r\n"); // Not now: LastHttpContent will be sent writeResponse(ctx.channel()); return; } try { decoder = new HttpPostRequestDecoder(factory, request); } catch (ErrorDataDecoderException e1) { e1.printStackTrace(); responseContent.append(e1.getMessage()); writeResponse(ctx.channel(), true); return; } boolean readingChunks = HttpUtil.isTransferEncodingChunked(request); responseContent.append("Is Chunked: " + readingChunks + "\r\n"); responseContent.append("IsMultipart: " + decoder.isMultipart() + "\r\n"); if (readingChunks) { // Chunk version responseContent.append("Chunks: "); } } // check if the decoder was constructed before // if not it handles the form get if (decoder != null) { if (msg instanceof HttpContent) { // New chunk is received HttpContent chunk = (HttpContent) msg; try { decoder.offer(chunk); } catch (ErrorDataDecoderException e1) { e1.printStackTrace(); responseContent.append(e1.getMessage()); writeResponse(ctx.channel(), true); return; } responseContent.append('o'); // example of reading chunk by chunk (minimize memory usage due to // Factory) readHttpDataChunkByChunk(); // example of reading only if at the end if (chunk instanceof LastHttpContent) { writeResponse(ctx.channel()); reset(); } } } else { writeResponse(ctx.channel()); } }
From source file:io.reactivex.netty.protocol.http.client.RequestProcessor.java
License:Apache License
public Observable<Void> simulateTimeout(HttpServerRequest<ByteBuf> httpRequest, final HttpServerResponse<ByteBuf> response) { String uri = httpRequest.getUri(); QueryStringDecoder decoder = new QueryStringDecoder(uri); List<String> timeout = decoder.parameters().get("timeout"); if (null != timeout && !timeout.isEmpty()) { // Do not use Thread.sleep() here as that blocks the eventloop and since by default the eventloop is shared, // a few of these timeout requests can just cause failures in other tests (if running parallely) return Observable.interval(Integer.parseInt(timeout.get(0)), TimeUnit.MILLISECONDS) .flatMap(new Func1<Long, Observable<Void>>() { @Override//from w w w . j a v a 2 s .co m public Observable<Void> call(Long aLong) { response.setStatus(HttpResponseStatus.OK); return response.writeStringAndFlush("OK"); } }); } else { response.setStatus(HttpResponseStatus.BAD_REQUEST); return response.writeStringAndFlush("Please provide a timeout parameter."); } }
From source file:io.reactivex.netty.samples.SimplePostServer.java
License:Apache License
public HttpServer<ByteBuf, ByteBuf> createServer() { HttpServer<ByteBuf, ByteBuf> server = RxNetty .newHttpServerBuilder(port, new RequestHandler<ByteBuf, ByteBuf>() { @Override//www . j a va 2 s. c o m public Observable<Void> handle(HttpServerRequest<ByteBuf> request, final HttpServerResponse<ByteBuf> response) { return request.getContent().map(new Func1<ByteBuf, ByteBuf>() { @Override public ByteBuf call(ByteBuf buf) { ByteBuf buf0 = Unpooled.copiedBuffer(buf); logger.info("buf0 {} refCnt() : {}", buf0.toString(), buf0.refCnt()); return buf0; } }).reduce(new Func2<ByteBuf, ByteBuf, ByteBuf>() { @Override public ByteBuf call(ByteBuf buf1, ByteBuf buf2) { logger.info("reduce"); logger.info("buf1 {} refCnt() : {}", buf1.toString(), buf1.refCnt()); logger.info("buf2 {} refCnt() : {}", buf2.toString(), buf2.refCnt()); ByteBuf buf3 = Unpooled.copiedBuffer(buf1, buf2); buf1.release(); logger.info("buf1 release"); logger.info("buf1 {} refCnt() : {}", buf1.toString(), buf1.refCnt()); buf2.release(); logger.info("buf2 release"); logger.info("buf2 {} refCnt() : {}", buf2.toString(), buf2.refCnt()); logger.info("buf3 {} refCnt() : {}", buf3.toString(), buf3.refCnt()); return buf3; } }).map(new Func1<ByteBuf, Void>() { @Override public Void call(ByteBuf buf4) { String str = buf4.toString(Charset.defaultCharset()); QueryStringDecoder decoder = new QueryStringDecoder(str, false); Map<String, List<String>> map = decoder.parameters(); for (String key : map.keySet()) { System.out.println(key + " : " + map.get(key).get(0)); } // response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR); response.setStatus(HttpResponseStatus.OK); response.writeStringAndFlush("1"); logger.info("buf4 {} refCnt() : {}", buf4.toString(), buf4.refCnt()); buf4.release(); logger.info("buf4 release"); logger.info("buf4 {} refCnt() : {}", buf4.toString(), buf4.refCnt()); return null; } }) // .collect(new Func0<List<String>>() { // // @Override public List<String> call() { // return new ArrayList<>(); // } // }, new Action2<List<String>, ByteBuf>() { // // @Override public void call(List<String> list, ByteBuf buf) { // // System.out.println(list.size() + " , " + buf.toString(Charset.defaultCharset())); // list.add(buf.toString(Charset.defaultCharset())); // } // }) // .map(new Func1<List<String>, Void>() { // // @Override public Void call(List<String> list) { // String str = ""; // for (String s : list) { // str += s; // } // // System.out.println(str); // QueryStringDecoder decoder = new QueryStringDecoder(str, false); // Map<String, List<String>> map = decoder.parameters(); // for (String key : map.keySet()) { // System.out.println(key + " : " + map.get(key).get(0)); // } // response.writeStringAndFlush("1"); // return null; // } // }) .ignoreElements(); } }).pipelineConfigurator(new HttpServerPipelineConfigurator<ByteBuf, ByteBuf>()) // .enableWireLogging(LogLevel.ERROR) .build(); logger.info("Simple POST server started..."); return server; }
From source file:io.scalecube.socketio.pipeline.DisconnectHandler.java
License:Apache License
@Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { if (msg instanceof HttpRequest) { final HttpRequest req = (HttpRequest) msg; final HttpMethod requestMethod = req.getMethod(); final QueryStringDecoder queryDecoder = new QueryStringDecoder(req.getUri()); final String requestPath = queryDecoder.path(); boolean disconnect = queryDecoder.parameters().containsKey(DISCONNECT); if (disconnect) { if (log.isDebugEnabled()) log.debug("Received HTTP disconnect request: {} {} from channel: {}", requestMethod, requestPath, ctx.channel()); final String sessionId = PipelineUtils.getSessionId(requestPath); final Packet disconnectPacket = new Packet(PacketType.DISCONNECT, sessionId); disconnectPacket.setOrigin(PipelineUtils.getOrigin(req)); ctx.fireChannelRead(disconnectPacket); ReferenceCountUtil.release(msg); return; }// w w w . j ava 2 s.c om } ctx.fireChannelRead(msg); }
From source file:io.scalecube.socketio.pipeline.PipelineUtils.java
License:Apache License
public static String extractParameter(QueryStringDecoder queryDecoder, String key) { final Map<String, List<String>> params = queryDecoder.parameters(); List<String> paramsByKey = params.get(key); return (paramsByKey != null) ? paramsByKey.get(0) : null; }
From source file:io.servicecomb.provider.springmvc.reference.CseClientHttpRequest.java
License:Apache License
@Override public ClientHttpResponse execute() throws IOException { requestMeta = createRequestMeta(method.name(), uri); QueryStringDecoder queryStringDecoder = new QueryStringDecoder(uri.getRawSchemeSpecificPart()); queryParams = queryStringDecoder.parameters(); Object[] args = this.collectArguments(); // ?//from w ww. j av a 2 s .co m return this.invoke(args); }
From source file:io.soliton.protobuf.json.JsonRpcServerHandler.java
License:Apache License
/** * Determines whether the response to the request should be pretty-printed. * * @param request the HTTP request./* ww w . java 2s . c o m*/ * @return {@code true} if the response should be pretty-printed. */ private boolean shouldPrettyPrint(HttpRequest request) { QueryStringDecoder decoder = new QueryStringDecoder(request.getUri(), Charsets.UTF_8, true, 2); Map<String, List<String>> parameters = decoder.parameters(); if (parameters.containsKey(PP_PARAMETER)) { return parseBoolean(parameters.get(PP_PARAMETER).get(0)); } else if (parameters.containsKey(PRETTY_PRINT_PARAMETER)) { return parseBoolean(parameters.get(PRETTY_PRINT_PARAMETER).get(0)); } return true; }
From source file:io.syncframework.netty.RequestWrapper.java
License:Apache License
public void setRequest(HttpRequest request) { this.request = request; this.session = null; ///*from w w w. j av a 2s. co m*/ // setting headers... // for (Entry<String, String> entry : request.headers()) { String name = entry.getKey(); String value = entry.getValue(); if (log.isTraceEnabled()) log.trace("header: {} -> {}", name, value); if (name.toLowerCase().equals(HttpHeaderNames.COOKIE.toString())) { ServerCookieDecoder decoder = ServerCookieDecoder.STRICT; Set<Cookie> cookies = decoder.decode(value); for (Cookie cookie : cookies) { cookieContext.put(cookie.name(), cookie.value()); } continue; } List<String> values = headers.get(name); if (values == null) { values = new LinkedList<String>(); } values.add(entry.getValue()); headers.put(name, values); } // // parameters from the URL // QueryStringDecoder decoderQuery = new QueryStringDecoder(request.uri()); Map<String, List<String>> uriAttributes = decoderQuery.parameters(); for (Entry<String, List<String>> attr : uriAttributes.entrySet()) { parameters.put(attr.getKey(), attr.getValue()); } }