Example usage for io.netty.handler.codec.http QueryStringDecoder parameters

List of usage examples for io.netty.handler.codec.http QueryStringDecoder parameters

Introduction

In this page you can find the example usage for io.netty.handler.codec.http QueryStringDecoder parameters.

Prototype

public Map<String, List<String>> parameters() 

Source Link

Document

Returns the decoded key-value parameter pairs of the URI.

Usage

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());
    }
}