List of usage examples for io.netty.handler.codec.http QueryStringDecoder parameters
public Map<String, List<String>> parameters()
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); }