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

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

Introduction

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

Prototype

public QueryStringDecoder(URI uri, Charset charset) 

Source Link

Document

Creates a new decoder that decodes the specified URI encoded in the specified charset.

Usage

From source file:cn.wantedonline.puppy.httpserver.component.HttpRequest.java

License:Apache License

public QueryStringDecoder getQueryStringDecoder() {
    if (AssertUtil.isNull(queryStringDecoder)) {
        queryStringDecoder = new QueryStringDecoder(getUri(), charset4QueryStringDecoder);
    }/*w  w w.  j  a v  a  2 s .c  o  m*/
    return queryStringDecoder;
}

From source file:com.barchart.http.server.PooledServerRequest.java

License:BSD License

@Override
public Map<String, List<String>> getParameters() {

    if (queryStringDecoded == null) {

        if (HttpHeaders.Values.APPLICATION_X_WWW_FORM_URLENCODED
                .equals(headers().get(HttpHeaders.Names.CONTENT_TYPE))) {
            queryStringDecoded = new QueryStringDecoder(nettyRequest.content().toString(getCharacterEncoding()),
                    false).parameters();
        } else if (queryString != null) {
            queryStringDecoded = new QueryStringDecoder(queryString, false).parameters();
        } else {/*from w w w.  j av  a 2s  .c  o m*/
            queryStringDecoded = new HashMap<String, List<String>>();
        }

    }

    return queryStringDecoded;

}

From source file:com.barchart.netty.server.http.pipeline.PooledHttpServerRequest.java

License:BSD License

@Override
public Map<String, List<String>> getParameters() {

    if (queryStringDecoded == null) {

        if (HttpHeaders.Values.APPLICATION_X_WWW_FORM_URLENCODED
                .equals(headers().get(HttpHeaders.Names.CONTENT_TYPE))) {
            queryStringDecoded = new QueryStringDecoder(nettyRequest.content().toString(getCharacterEncoding()),
                    false).parameters();
        } else if (queryString != null) {
            queryStringDecoded = new QueryStringDecoder(queryString, false).parameters();
        } else {/*w w w.  j a  va 2  s  .c o  m*/
            queryStringDecoded = Collections.emptyMap();
        }

    }

    return queryStringDecoded;

}

From source file:com.github.mike10004.seleniumhelp.TrafficMonitorFilter.java

License:Apache License

protected void captureQueryParameters(HttpRequest httpRequest, HarRequest harRequest) {
    // capture query parameters. it is safe to assume the query string is UTF-8, since it "should" be in US-ASCII (a subset of UTF-8),
    // but sometimes does include UTF-8 characters.
    QueryStringDecoder queryStringDecoder = new QueryStringDecoder(httpRequest.getUri(),
            StandardCharsets.UTF_8);

    try {/*w  ww . ja  va 2  s  . c  o  m*/
        for (Map.Entry<String, List<String>> entry : queryStringDecoder.parameters().entrySet()) {
            for (String value : entry.getValue()) {
                harRequest.getQueryString().add(new HarNameValuePair(entry.getKey(), value));
            }
        }
    } catch (IllegalArgumentException e) {
        // QueryStringDecoder will throw an IllegalArgumentException if it cannot interpret a query string. rather than cause the entire request to
        // fail by propagating the exception, simply skip the query parameter capture.
        log.info("Unable to decode query parameters on URI: " + httpRequest.getUri(), e);
    }
}

From source file:com.king.platform.net.http.util.UriQueryParser.java

License:Apache License

public UriQueryParser(String url, Charset charset) {
    queryStringDecoder = new QueryStringDecoder(url, charset);
    parameters = queryStringDecoder.parameters();
}

From source file:com.linecorp.armeria.internal.AnnotatedHttpServiceParamUtil.java

License:Apache License

/**
 * Returns a map of parameters decoded from a request.
 *
 * <p>Usually one of a query string of a URI or URL-encoded form data is specified in the request.
 * If both of them exist though, they would be decoded and merged into a parameter map.</p>
 *
 * <p>Names and values of the parameters would be decoded as UTF-8 character set.</p>
 *
 * @see QueryStringDecoder#QueryStringDecoder(String, boolean)
 * @see HttpConstants#DEFAULT_CHARSET/*from  w ww .jav a2 s .  c  o m*/
 */
public static HttpParameters httpParametersOf(ServiceRequestContext ctx, HttpHeaders reqHeaders,
        @Nullable AggregatedHttpMessage message) {
    try {
        Map<String, List<String>> parameters = null;
        final String query = ctx.query();
        if (query != null) {
            parameters = new QueryStringDecoder(query, false).parameters();
        }
        if (aggregationAvailable(reqHeaders)) {
            assert message != null;
            final String body = message.content().toStringAscii();
            if (!body.isEmpty()) {
                final Map<String, List<String>> p = new QueryStringDecoder(body, false).parameters();
                if (parameters == null) {
                    parameters = p;
                } else if (p != null) {
                    parameters.putAll(p);
                }
            }
        }

        if (parameters == null || parameters.isEmpty()) {
            return EMPTY_PARAMETERS;
        }

        return HttpParameters.copyOf(parameters);
    } catch (Exception e) {
        // If we failed to decode the query string, we ignore the exception raised here.
        // A missing parameter might be checked when invoking the annotated method.
        logger.debug("Failed to decode query string: {}", e);
        return EMPTY_PARAMETERS;
    }
}

From source file:com.sample.HelloWorldWithJavaScript.PingVerticle.java

License:Apache License

void startHttpServer() {
    final EventBus eb = vertx.eventBus();

    final Yoke app = new Yoke(this);
    app.secretSecurity("keyboard cat");

    final Middleware RequiredAuth = new Middleware() {
        @Override/*from   w w  w  . j a va  2 s  .  co m*/
        public void handle(@NotNull final YokeRequest request, @NotNull final Handler<Object> next) {
            SessionObject session = request.get("session");

            if (session != null) {
                if (session.getString("id") != null) {
                    next.handle(null);
                    return;
                }
            }

            request.response().redirect("/examples");
        }
    };

    final Mac hmac = app.security().getMac("HmacSHA256");

    app.use(new Favicon()).store(new InMemorySessionStore()).engine(new StringPlaceholderEngine("webroot"))
            .use(new BodyParser()).use(new CookieParser(hmac)).use(new Session(hmac))
            .use(new Static("webroot/examples")).use(new Router().get("/examples", new Handler<YokeRequest>() {
                @Override
                public void handle(YokeRequest request) {

                    System.out.println("ex:" + Thread.currentThread().getId());
                    request.response().render("examples/login.shtml");
                }
            })

                    .get("/profile", RequiredAuth, new Middleware() {
                        @Override
                        public void handle(final YokeRequest request, Handler<Object> next) {
                            SessionObject session = request.get("session");
                            System.out.println("lo:" + Thread.currentThread().getId());

                            for (String key : session.getFieldNames()) {
                                request.put(key, session.getString(key));
                            }
                            request.response().render("examples/profile.shtml");

                        }
                    })

                    .get(".*", new Handler<YokeRequest>() {
                        public void handle(YokeRequest req) {
                            req.response().sendFile("webroot/" + req.path());
                        }
                    })

                    .post("/login", new Middleware() {
                        @Override
                        public void handle(final YokeRequest request, Handler<Object> next) {

                            System.out.println("lo:" + Thread.currentThread().getId());

                            final JsonObject session = request.createSession();

                            if (request.body() != null) {

                                eb.send("test.address", "This is a message", new Handler<Message<String>>() {
                                    public void handle(Message<String> message) {
                                        System.out.println("I received a reply " + message.body());

                                        QueryStringDecoder qsd = new QueryStringDecoder(
                                                request.body().toString(), false);
                                        Map<String, List<String>> params = qsd.parameters();

                                        System.out.println(request.body());

                                        for (Map.Entry<String, List<String>> entry : params.entrySet()) {
                                            session.putString(entry.getKey().toString(),
                                                    entry.getValue().toString());
                                            request.put(entry.getKey().toString(), entry.getValue().toString());

                                        }
                                        request.response().render("examples/welcome.shtml");
                                    }
                                });
                            } else {
                                eb.send("test.address", "This is a message", new Handler<Message<String>>() {
                                    public void handle(Message<String> message) {
                                        System.out.println("I received a reply " + message.body());

                                        System.out.println(request.formAttributes());

                                        for (Map.Entry entry : request.formAttributes().entries()) {
                                            session.putString(entry.getKey().toString(),
                                                    entry.getValue().toString());
                                            request.put(entry.getKey().toString(), entry.getValue().toString());
                                        }

                                        request.put("tag",
                                                "<button class='ui active button' id='One'>${name}${name}</button>");
                                        request.response().render("examples/welcome.shtml");
                                    }
                                });
                            }
                        }
                    })

            ).listen(9090);
}

From source file:com.sample.HelloWorldWithUnity3d.PingVerticle.java

License:Apache License

void startHttpServer() {
    HttpServer server = vertx.createHttpServer();
    RouteMatcher routeMatcher = new RouteMatcher();

    routeMatcher.get("/", new Handler<HttpServerRequest>() {
        public void handle(HttpServerRequest req) {
            req.response().headers().set("Content-Type", "text/html; charset=UTF-8");
            System.out.println("Hello World!");

            TestReq fooBarMessage = new TestReq();
            fooBarMessage.key = 123456789;
            fooBarMessage.value = "abc";
            ByteArrayOutputStream outStream = new ByteArrayOutputStream(256);
            TProtocol tProtocol = new TBinaryProtocol(new TIOStreamTransport(null, outStream));

            try {
                fooBarMessage.write(tProtocol);
            } catch (TException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();/*w  w  w  .  j av  a  2s  .com*/
            }

            byte[] content = outStream.toByteArray();

            tProtocol = new TBinaryProtocol(new TIOStreamTransport(new ByteArrayInputStream(content), null));
            TestReq fooBarMessage2 = new TestReq();
            try {
                fooBarMessage2.read(tProtocol);
            } catch (TException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }

            try {
                //  
                Session session = HibernateUtil.getCurrentSession();
                MyTestTable entity = (MyTestTable) session.get(MyTestTable.class, 1);
                entity.setName("bbb");
                Transaction tx = session.beginTransaction();
                session.update(entity);
                tx.commit();
                req.response().end("Hello World " + entity.getName());
            } catch (HibernateException e) {
                e.printStackTrace();
            } finally {
                //  
                HibernateUtil.closeSession();
            }
        }
    });

    routeMatcher.get("/login", new Handler<HttpServerRequest>() {
        public void handle(HttpServerRequest req) {

            try {

                String sid = GetSessionId(req);
                if (sid == null) {
                    req.response().headers().set("Set-Cookie",
                            ServerCookieEncoder.encode(new DefaultCookie("sessionId", generateSessionId())));
                }

                KeyPair keyPair = RSA.CreateKeyPair();

                PublicKey publicKey = keyPair.getPublic();
                PrivateKey privateKey = keyPair.getPrivate();

                RSAPublicKeySpec publicSpec = RSA.GetPublicKeySpec(keyPair);

                byte[] publicKeyModulus = publicSpec.getModulus().toByteArray();
                byte[] publicKeyExponent = publicSpec.getPublicExponent().toByteArray();

                // test
                byte[] encryptedData = RSA.Encrypt(publicKey, "haha!");
                String decryptedText = RSA.DecryptToString(privateKey, encryptedData);

                JsonObject json = new JsonObject();
                json.putBinary("publicKeyModulus", publicKeyModulus);
                json.putBinary("publicKeyExponent", publicKeyExponent);

                UserSession userSession = new UserSession();
                userSession.privateKey = privateKey;

                vertx.sharedData().getMap("1").put("userSession", userSession);
                req.response().end(json.toString());

            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    });

    routeMatcher.post("/hello", new Handler<HttpServerRequest>() {
        public void handle(final HttpServerRequest req) {

            String sid = GetSessionId(req);

            req.bodyHandler(new Handler<Buffer>() {
                @Override
                public void handle(Buffer buff) {
                    String contentType = req.headers().get("Content-Type");
                    if ("application/octet-stream".equals(contentType)) {
                        /*
                         QueryStringDecoder qsd = new QueryStringDecoder(buff.toString(), false);
                         Map<String, List<String>> params = qsd.parameters();
                         System.out.println(params);
                         */

                        UserSession userSession = (UserSession) vertx.sharedData().getMap("1")
                                .get("userSession");

                        try {
                            String decryptedText = RSA.DecryptToString(userSession.privateKey, buff.getBytes());

                            JsonObject json = new JsonObject();
                            json.putString("decryptedText", decryptedText);

                            req.response().end(json.toString());
                        } catch (Exception e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
            });
        }
    });

    routeMatcher.post("/name/:name", new Handler<HttpServerRequest>() {
        public void handle(final HttpServerRequest req) {

            req.bodyHandler(new Handler<Buffer>() {
                @Override
                public void handle(Buffer buff) {

                    QueryStringDecoder qsd = new QueryStringDecoder(buff.toString(), false);
                    Map<String, List<String>> params = qsd.parameters();
                    System.out.println(params);

                    req.response().end("Your name is " + req.params().get("name"));
                }
            });

        }
    });

    routeMatcher.put("/age/:age", new Handler<HttpServerRequest>() {
        public void handle(final HttpServerRequest req) {

            req.bodyHandler(new Handler<Buffer>() {
                @Override
                public void handle(Buffer buff) {

                    QueryStringDecoder qsd = new QueryStringDecoder(buff.toString(), false);
                    Map<String, List<String>> params = qsd.parameters();
                    System.out.println(params);

                    if (params.size() > 0)
                        req.response()
                                .end("Your age is " + req.params().get("age") + params.get("name").get(0));
                    else
                        req.response().end("Your age is " + req.params().get("age"));
                }
            });

        }
    });

    routeMatcher.get("/json", new Handler<HttpServerRequest>() {
        public void handle(HttpServerRequest req) {
            JsonObject obj = new JsonObject().putString("name", "chope");
            req.response().end(obj.encode());
        }
    });

    server.requestHandler(routeMatcher).listen(808, "localhost");
}

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/*from   w  w  w.j a v  a2 s.com*/
                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: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);//from ww  w  .jav a2s  .  c  o  m
    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;
    }
}