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:org.bridje.http.impl.HttpServerChannelHandler.java

License:Apache License

private void readHeaders(ChannelHandlerContext ctx, HttpRequest msg) {
    if (req == null && context == null) {
        context = new HttpBridletContextImpl();
        req = new HttpBridletRequestImpl(msg);
        QueryStringDecoder decoderQuery = new QueryStringDecoder(msg.getUri());
        req.setQueryString(decoderQuery.parameters());
        req.setCookies(parseCookies(msg.headers().get(COOKIE)));
        // new getMethod

        if (req.isForm()) {
            decoder = new HttpPostRequestDecoder(FACTORY, msg);
        }// w  ww .  j  a  va 2  s .co m
    } else {
        sendBadRequest(ctx);
    }
}

From source file:org.commonjava.freeki.rest.GroupContentHandler.java

License:Open Source License

@Routes({ @Route(path = "/wiki/:dir=(.+)/", method = Method.GET), @Route(path = "/wiki/", method = Method.GET),
        @Route(path = "/wiki", method = Method.GET),
        @Route(path = "/api/group/:dir=(.+)", method = Method.GET), })
/* @formatter:on */
public void get(final HttpServerRequest req) throws Exception {
    final String acceptHeader = req.headers().get("Accept");
    req.response().setChunked(true);//www  .  j  av  a 2 s . c om
    req.response().setStatusCode(200);

    String dir = req.params().get(DIR.param());

    if (dir == null) {
        dir = "/";
    } else if (dir.endsWith("/")) {
        dir = dir.substring(0, dir.length() - 1);
    }

    //        System.out.printf( "Directory: %s\n", dir );

    final String mimeAccept = acceptHeader == null ? TEXT_HTML.value()
            : MIMEParse.bestMatch(DIR_ACCEPT, acceptHeader);
    final ContentType type = ContentType.find(mimeAccept);

    try {
        final Group group = store.getGroup(dir);
        if (group == null) {
            req.response().setStatusCode(404).setStatusMessage("Not found.").end();
            return;
        }

        //            logger.info( "Got group with %d children:\n\n  %s\n\n", group.getChildren()
        //                                                                         .size(), join( group.getChildren(), "\n  " ) );

        Map<String, String> queryParams;
        if (req.query() != null) {
            final QueryStringDecoder qsd = new QueryStringDecoder(req.query(), false);
            queryParams = RequestUtils.toMap(qsd.parameters());
        } else {
            queryParams = Collections.emptyMap();
        }

        final String rendered = engine.render(group, type, queryParams);

        if (type != null) {
            req.response().headers().add("Content-Type", type.value());
        }

        if (rendered != null) {
            req.response().end(rendered);
        } else {
            req.response().setStatusCode(500).setStatusMessage("Rendered group has no content.").end();
        }
    } catch (IOException | RenderingException e) {
        logger.error("Failed to retrieve group: %s. Reason: %s", e, dir, e.getMessage());
        throw e;
    }
}

From source file:org.commonjava.freeki.rest.PageContentHandler.java

License:Open Source License

@Routes({ @Route(path = "/wiki/:page", method = Method.GET),
        @Route(path = "/wiki/:dir=(.*)/:page", method = Method.GET),
        @Route(path = "/api/page/:page", method = Method.GET, contentType = "text/plain"),
        @Route(path = "/api/page/:dir=(.*)/:page", method = Method.GET, contentType = "text/plain") })
/* @formatter:on */
public void get(final HttpServerRequest req) throws Exception {
    req.response().setChunked(true);//  w  w w .  java  2s . co m
    req.response().setStatusCode(200);

    String dir = req.params().get(DIR.param());

    final String page = req.params().get(PAGE.param());

    if (dir == null) {
        dir = "/";
    }

    //        logger.info( "Page: %s\n", page );
    //        logger.info( "Dir: %s\n", dir );

    String mimeAccept = req.headers().get(RouteBinding.RECOMMENDED_CONTENT_TYPE);
    //        logger.info( "Recommended content type: %s", mimeAccept );

    if (mimeAccept == null) {
        final String acceptHeader = req.headers().get("Accept");

        mimeAccept = acceptHeader == null ? TEXT_HTML.value() : MIMEParse.bestMatch(PAGE_ACCEPT, acceptHeader);
    }

    final ContentType type = ContentType.find(mimeAccept);

    //        logger.info( "Using content type: %s\n", type );

    try {
        Page pg = store.getPage(dir, page);
        if (pg == null) {
            if (auth.checkAutoCreate()) {
                pg = new Page(dir, page, "#" + page
                        + "\n\nThis page has been created automatically. Click the 'edit' button to enter content.",
                        page, System.currentTimeMillis(), "unknown");

                store.storePage(pg);
                req.response().headers().add("Location", req.uri() + "#editing");
                req.response().setStatusCode(302).setStatusMessage("Moved Temporarily").end();
            } else {
                req.response().setStatusCode(404).setStatusMessage("Not found.")
                        .write("404 Not found: " + req.path()).end();
            }

            return;
        }

        //            logger.info( "Got page: %s\n", pg.getId() );

        Map<String, String> queryParams;
        if (req.query() != null) {
            final QueryStringDecoder qsd = new QueryStringDecoder(req.query(), false);
            queryParams = RequestUtils.toMap(qsd.parameters());
        } else {
            queryParams = Collections.emptyMap();
        }

        final String rendered = engine.render(pg, type, queryParams);

        //            logger.info( "Rendered to:\n\n%s\n\n", rendered );

        if (type != null) {
            req.response().headers().add("Content-Type", type.value());
        }

        if (rendered != null) {
            req.response().end(rendered);
        } else {
            req.response().setStatusCode(500).setStatusMessage("Rendered page has no content.").end();
        }
    } catch (IOException | RenderingException e) {
        logger.error("Failed to retrieve group: %s. Reason: %s", e, dir, e.getMessage());
        throw e;
    }
}

From source file:org.glowroot.local.ui.QueryStrings.java

License:Apache License

static <T> T decode(String queryString, Class<T> clazz) throws Exception {
    Method builderMethod = Reflections.getDeclaredMethod(clazz, "builder");
    Object builder = Reflections.invokeStatic(builderMethod);
    checkNotNull(builder);/*from   w  ww . ja v  a 2 s  .  c o m*/
    Class<?> immutableBuilderClass = builder.getClass();
    Map<String, Method> setters = settersCache.getUnchecked(immutableBuilderClass);
    QueryStringDecoder decoder = new QueryStringDecoder('?' + queryString);
    for (Entry<String, List<String>> entry : decoder.parameters().entrySet()) {
        String key = entry.getKey();
        key = CaseFormat.LOWER_HYPHEN.to(CaseFormat.LOWER_CAMEL, key);
        // special rule for "-mbean" so that it will convert to "...MBean"
        key = key.replace("Mbean", "MBean");
        Method setter = setters.get(key);
        checkNotNull(setter, "Unexpected attribute: %s", key);
        Class<?> valueClass = setter.getParameterTypes()[0];
        Object value;
        if (valueClass == Iterable.class) {
            // only lists of type string supported
            value = entry.getValue();
        } else {
            value = parseString(entry.getValue().get(0), valueClass);
        }
        Reflections.invoke(setter, builder, value);
    }
    Method build = Reflections.getDeclaredMethod(immutableBuilderClass, "build");
    @SuppressWarnings("unchecked")
    T decoded = (T) Reflections.invoke(build, builder);
    return decoded;
}

From source file:org.glowroot.local.ui.TraceDetailHttpService.java

License:Apache License

@Override
public @Nullable FullHttpResponse handleRequest(ChannelHandlerContext ctx, HttpRequest request)
        throws Exception {
    QueryStringDecoder decoder = new QueryStringDecoder(request.getUri());
    String path = decoder.path();
    String traceComponent = path.substring(path.lastIndexOf('/') + 1);
    List<String> traceIds = decoder.parameters().get("trace-id");
    checkNotNull(traceIds, "Missing trace id in query string: %s", request.getUri());
    String traceId = traceIds.get(0);
    logger.debug("handleRequest(): traceComponent={}, traceId={}", traceComponent, traceId);

    CharSource charSource = getDetailCharSource(traceComponent, traceId);
    if (charSource == null) {
        return new DefaultFullHttpResponse(HTTP_1_1, NOT_FOUND);
    }//  w w  w.  java  2s. co  m
    HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK);
    response.headers().set(Names.TRANSFER_ENCODING, Values.CHUNKED);
    response.headers().set(Names.CONTENT_TYPE, "application/json; charset=UTF-8");
    boolean keepAlive = HttpHeaders.isKeepAlive(request);
    if (keepAlive && !request.getProtocolVersion().isKeepAliveDefault()) {
        response.headers().set(Names.CONNECTION, Values.KEEP_ALIVE);
    }
    HttpServices.preventCaching(response);
    ctx.write(response);
    ChannelFuture future = ctx.write(ChunkedInputs.fromReader(charSource.openStream()));
    HttpServices.addErrorListener(future);
    if (!keepAlive) {
        HttpServices.addCloseListener(future);
    }
    // return null to indicate streaming
    return null;
}

From source file:org.glowroot.ui.QueryStrings.java

License:Apache License

static <T> T decode(String queryString, Class<T> clazz) throws Exception {
    String prefix = "";
    Package pkg = clazz.getPackage();
    if (pkg != null) {
        prefix = pkg.getName() + '.';
    }/* w w  w.  ja v a 2s .  com*/
    String immutableClassName = prefix + "Immutable" + clazz.getSimpleName();
    Class<?> immutableClass = Class.forName(immutableClassName, false, clazz.getClassLoader());
    Method builderMethod = immutableClass.getDeclaredMethod("builder");
    Object builder = builderMethod.invoke(null);
    checkNotNull(builder);
    Class<?> immutableBuilderClass = builder.getClass();
    Map<String, Method> setters = settersCache.getUnchecked(immutableBuilderClass);
    QueryStringDecoder decoder = new QueryStringDecoder('?' + queryString);
    for (Entry<String, List<String>> entry : decoder.parameters().entrySet()) {
        String key = entry.getKey();
        key = CaseFormat.LOWER_HYPHEN.to(CaseFormat.LOWER_CAMEL, key);
        // special rule for "-mbean" so that it will convert to "...MBean"
        key = key.replace("Mbean", "MBean");
        Method setter = setters.get(key);
        checkNotNull(setter, "Unexpected attribute: %s", key);
        Type valueType = setter.getGenericParameterTypes()[0];
        Object value;
        if (valueType instanceof ParameterizedType) {
            // only generic iterable supported
            valueType = ((ParameterizedType) valueType).getActualTypeArguments()[0];
            List<Object> parsedValues = Lists.newArrayList();
            for (String stringValue : entry.getValue()) {
                Object parsedValue = parseString(stringValue, (Class<?>) valueType);
                // ignore empty query param values, e.g. the empty percentile value in
                // percentile=&percentile=95&percentile=99
                if (parsedValue != null) {
                    parsedValues.add(parsedValue);
                }
            }
            value = parsedValues;
        } else {
            value = parseString(entry.getValue().get(0), (Class<?>) valueType);
        }
        setter.invoke(builder, value);
    }
    Method build = immutableBuilderClass.getDeclaredMethod("build");
    @SuppressWarnings("unchecked")
    T decoded = (T) build.invoke(builder);
    return decoded;
}

From source file:org.iotivity.cloud.base.protocols.proxy.CoapHttpProxyHandler.java

License:Open Source License

@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {

    // in case of Receive Request from http
    if (msg instanceof HttpRequest) {
        // Check uri query param that contains coap device uuid
        // then search those and create coapRequest and send
        HttpRequest httpRequest = (HttpRequest) msg;
        QueryStringDecoder queryStringDecoder = new QueryStringDecoder(httpRequest.getUri());

        List<String> didList = queryStringDecoder.parameters().get("di");

        if (didList != null) {
            ChannelHandlerContext coapClient = sessionManager.querySession(didList.get(0));

            if (coapClient != null) {
                List<String> uriList = queryStringDecoder.parameters().get("href");
                if (uriList != null) {
                    coapClient.channel().attr(keyHttpCtx).set(ctx);
                    coapClient.writeAndFlush(httpRequestToCoAPRequest(uriList.get(0), (HttpRequest) msg));

                    return;
                }/*from w w w  . j  a  va 2  s  .  c om*/
            } else {
                Logger.d("Unable to find session: " + didList.get(0));
            }
        }

        // Prints available sessions to html

        ctx.writeAndFlush(printsAvailableSessions()).addListener(ChannelFutureListener.CLOSE);
        return;
    }

    if (msg instanceof CoapResponse) {
        ctx.channel().attr(keyHttpCtx).get().writeAndFlush(coapResponseToHttpResponse((CoapResponse) msg))
                .addListener(ChannelFutureListener.CLOSE);
        return;
    }

    // Pass to upper-layer
    super.channelRead(ctx, msg);
}

From source file:org.ireland.jnetty.http.HttpServletRequestImpl.java

License:Open Source License

/**
 * Extract Parameters from query string and form HttpServletRequestImpl Body(application/x-www-form-urlencoded [POST
 * | PUT])//  w  w  w  .  j ava 2s  .c  o m
 */
public void extractParameters() {

    if (_paramsExtracted)
        return;

    _paramsExtracted = true;

    if (_parameters == null)
        _parameters = new HashMap<String, List<String>>();

    // Handle query string

    if (_queryEncoding == null) {
        QueryStringDecoder queryStringDecoder = new QueryStringDecoder(request.getUri());

        _parameters.putAll(queryStringDecoder.parameters());

    } else {
        try {
            QueryStringDecoder queryStringDecoder = new QueryStringDecoder(request.getUri(),
                    Charset.forName(_queryEncoding));

            _parameters.putAll(queryStringDecoder.parameters());

        } catch (UnsupportedCharsetException e) {
            if (LOG.isDebugEnabled())
                LOG.warn(e);
            else
                LOG.warn(e.toString());
        }
    }

    // handle form _content (application/x-www-form-urlencoded)
    String encoding = getCharacterEncoding();
    String content_type = getContentType();

    if (content_type != null && content_type.length() > 0) {
        content_type = ContentTypeUtil.getContentTypeWithoutCharset(content_type);

        // application/x-www-form-urlencoded( POST or PUT )
        if (HttpHeaders.Values.APPLICATION_X_WWW_FORM_URLENCODED.equals(content_type)
                && (HttpMethod.POST.name().equals(getMethod()) || HttpMethod.PUT.name().equals(getMethod()))) {
            int content_length = getContentLength();
            if (content_length > 0) {
                try {
                    Charset bodyCharset = Charset.forName(encoding);
                    String bodyContent = new String(getRowBodyContent(), bodyCharset);

                    // Add form params to query params
                    QueryStringDecoder queryStringDecoder = new QueryStringDecoder(bodyContent, bodyCharset,
                            false);

                    if (_parameters == null)
                        _parameters = queryStringDecoder.parameters();
                    else//merge
                    {
                        Map<String, List<String>> map = queryStringDecoder.parameters();

                        for (Entry<String, List<String>> e : map.entrySet()) {
                            if (!_parameters.containsKey(e.getKey())) {
                                _parameters.put(e.getKey(), e.getValue());
                            } else// parameter with the same name exist,merge
                            {
                                List<String> value = _parameters.get(e.getKey());

                                if (value == null)
                                    _parameters.put(e.getKey(), e.getValue());
                                else {
                                    value.addAll(e.getValue()); // merge
                                    _parameters.put(e.getKey(), value);
                                }
                            }
                        }
                    }
                } catch (Exception e) {
                    if (LOG.isDebugEnabled())
                        e.printStackTrace();
                    else
                        LOG.warn(e.toString());
                }
            }
        }
    }
}

From source file:org.ireland.jnetty.JNettyServerHandler.java

License:Apache License

@Override
public void messageReceived(ChannelHandlerContext ctx, Object msg) throws Exception {
    if (msg instanceof HttpRequest) {
        HttpRequest request = this.request = (HttpRequest) msg;

        if (is100ContinueExpected(request)) {
            send100Continue(ctx);//w ww  . j  av a 2 s  . co  m
        }

        buf.setLength(0);
        buf.append("WELCOME TO THE WILD WILD WEB SERVER\r\n");
        buf.append("===================================\r\n");

        buf.append("VERSION: ").append(request.getProtocolVersion()).append("\r\n");
        buf.append("HOSTNAME: ").append(getHost(request, "unknown")).append("\r\n");
        buf.append("REQUEST_URI: ").append(request.getUri()).append("\r\n\r\n");

        List<Map.Entry<String, String>> headers = request.headers().entries();
        if (!headers.isEmpty()) {
            for (Map.Entry<String, String> h : request.headers().entries()) {
                String key = h.getKey();
                String value = h.getValue();
                buf.append("HEADER: ").append(key).append(" = ").append(value).append("\r\n");
            }
            buf.append("\r\n");
        }

        QueryStringDecoder queryStringDecoder = new QueryStringDecoder(request.getUri());
        Map<String, List<String>> params = queryStringDecoder.parameters();
        if (!params.isEmpty()) {
            for (Entry<String, List<String>> p : params.entrySet()) {
                String key = p.getKey();
                List<String> vals = p.getValue();
                for (String val : vals) {
                    buf.append("PARAM: ").append(key).append(" = ").append(val).append("\r\n");
                }
            }
            buf.append("\r\n");
        }

        appendDecoderResult(buf, request);
    }

    if (msg instanceof HttpContent) {
        HttpContent httpContent = (HttpContent) msg;

        ByteBuf content = httpContent.data();
        if (content.isReadable()) {
            buf.append("CONTENT: ");
            buf.append(content.toString(CharsetUtil.UTF_8));
            buf.append("\r\n");
            appendDecoderResult(buf, request);
        }

        if (msg instanceof LastHttpContent) {
            buf.append("END OF CONTENT\r\n");

            LastHttpContent trailer = (LastHttpContent) msg;
            if (!trailer.trailingHeaders().isEmpty()) {
                buf.append("\r\n");
                for (String name : trailer.trailingHeaders().names()) {
                    for (String value : trailer.trailingHeaders().getAll(name)) {
                        buf.append("TRAILING HEADER: ");
                        buf.append(name).append(" = ").append(value).append("\r\n");
                    }
                }
                buf.append("\r\n");
            }

            writeResponse(ctx, trailer);
        }
    }
}

From source file:org.jboss.arquillian.warp.impl.client.execution.HttpRequestWrapper.java

License:Apache License

@Override
public Map<String, List<String>> getQueryParameters() {
    if (queryParameters == null) {
        QueryStringDecoder queryStringDecoder = new QueryStringDecoder(request.getUri());
        queryParameters = queryStringDecoder.parameters();
    }/*from   w  ww  .j  av a  2  s .  c om*/
    return Collections.unmodifiableMap(queryParameters);
}