Java Examples for io.netty.handler.codec.http.QueryStringDecoder

The following java examples will help you to understand the usage of io.netty.handler.codec.http.QueryStringDecoder. These source code samples are taken from different open source projects.

Example 1
Project: mockserver-master  File: MockServerRequestDecoder.java View source code
@Override
protected void decode(ChannelHandlerContext ctx, FullHttpRequest fullHttpRequest, List<Object> out) {
    HttpRequest httpRequest = new HttpRequest();
    if (fullHttpRequest != null) {
        setMethod(httpRequest, fullHttpRequest);
        QueryStringDecoder queryStringDecoder = new QueryStringDecoder(fullHttpRequest.uri());
        setPath(httpRequest, queryStringDecoder);
        setQueryString(httpRequest, queryStringDecoder);
        setBody(httpRequest, fullHttpRequest);
        setHeaders(httpRequest, fullHttpRequest);
        setCookies(httpRequest, fullHttpRequest);
        httpRequest.withKeepAlive(isKeepAlive(fullHttpRequest));
        httpRequest.withSecure(isSecure);
    }
    out.add(httpRequest);
}
Example 2
Project: PUMA-master  File: BinlogSubscriptionDecoder.java View source code
@Override
public Object decode(FullHttpRequest request) throws DecoderException {
    if (request.getMethod().equals(HttpMethod.POST)) {
        String json = request.content().toString(Charset.forName("utf-8"));
        return ConvertHelper.fromJson(json, BinlogSubscriptionRequest.class);
    }
    BinlogSubscriptionRequest binlogSubscriptionRequest = new BinlogSubscriptionRequest();
    Map<String, List<String>> params = (new QueryStringDecoder(request.getUri())).parameters();
    binlogSubscriptionRequest.setClientName(params.get("clientName").get(0));
    binlogSubscriptionRequest.setDatabase(params.get("database").get(0));
    if (!params.containsKey("table")) {
        throw new DecoderException("must contain `table` in `BinlogSubscriptionRequest`");
    } else {
        binlogSubscriptionRequest.setTables(params.get("table"));
    }
    if (!params.containsKey("codec")) {
        binlogSubscriptionRequest.setCodec(DEFAULT_CODEC);
    } else {
        binlogSubscriptionRequest.setCodec(params.get("codec").get(0));
    }
    if (!params.containsKey("ddl")) {
        binlogSubscriptionRequest.setDdl(DEFAULT_DDL);
    } else {
        binlogSubscriptionRequest.setDdl(Boolean.valueOf(params.get("ddl").get(0)));
    }
    if (!params.containsKey("dml")) {
        binlogSubscriptionRequest.setDml(DEFAULT_DML);
    } else {
        binlogSubscriptionRequest.setDml(Boolean.valueOf(params.get("dml").get(0)));
    }
    if (!params.containsKey("transaction")) {
        binlogSubscriptionRequest.setTransaction(DEFAULT_TRANSACTION);
    } else {
        binlogSubscriptionRequest.setTransaction(Boolean.valueOf(params.get("transaction").get(0)));
    }
    return binlogSubscriptionRequest;
}
Example 3
Project: consulo-master  File: SubServer.java View source code
@Override
protected boolean process(@NotNull ChannelHandlerContext context, @NotNull FullHttpRequest request, @NotNull QueryStringDecoder urlDecoder) {
    if (handlers.isEmpty()) {
        // not yet initialized, for example, P2PTransport could add handlers after we bound.
        return false;
    }
    return request.method() == HttpMethod.POST && XmlRpcServer.SERVICE.getInstance().process(urlDecoder.path(), request, context, handlers);
}
Example 4
Project: MPS-master  File: MPSRequestManager.java View source code
@Override
public boolean process(@NotNull QueryStringDecoder decoder, @NotNull FullHttpRequest request, @NotNull ChannelHandlerContext context) throws IOException {
    HttpRequest boxedRequest;
    try {
        boxedRequest = new HttpRequest(request, decoder, context.channel());
    } catch (URISyntaxException exception) {
        return false;
    }
    for (IHttpRequestHandlerFactory handlerFactory : Sequence.fromIterable(new ExtensionPoint<IHttpRequestHandlerFactory>("jetbrains.mps.ide.httpsupport.HttpRequestHandlerEP").getObjects())) {
        IHttpRequestHandler handler = handlerFactory.create(boxedRequest);
        if (handler.canHandle()) {
            try {
                handler.handle();
            } catch (Throwable e) {
                handleException(e, handlerFactory, boxedRequest);
            } finally {
                return true;
            }
        }
    }
    return false;
}
Example 5
Project: netty-cookbook-master  File: HttpEventRoutingHandler.java View source code
@Override
protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
    if (msg instanceof HttpRequest) {
        HttpRequest request = (HttpRequest) msg;
        String uri = request.getUri();
        QueryStringDecoder decoder = new QueryStringDecoder(uri);
        String path = decoder.path();
        //System.out.println("path "+path);
        HttpResponse response = findHandler(request, path).handle(request, decoder);
        ctx.write(response);
        ctx.flush().close();
    }
}
Example 6
Project: Sparkngin-master  File: JSONMessageRouteHandler.java View source code
@Override
protected void doGet(ChannelHandlerContext ctx, HttpRequest httpReq) {
    QueryStringDecoder reqDecoder = new QueryStringDecoder(httpReq.getUri());
    String data = reqDecoder.parameters().get("data").get(0);
    Message message = JSONSerializer.INSTANCE.fromString(data, Message.class);
    Ack ack = sparkngin.push(message);
    writeJSON(ctx, httpReq, ack);
}
Example 7
Project: vnluser-master  File: NettyHttpUtil.java View source code
/**
	 * quick log data for error (video tracking)
	 * 
	 * @param ipAddress
	 * @param request
	 * @param uri
	 */
public static void logErrorData(String ipAddress, HttpRequest request, String uri) {
    if (StringUtil.isEmpty(uri)) {
        return;
    }
    int idx = uri.indexOf("?");
    if (idx < 0) {
        return;
    }
    String queryDetails = uri.substring(idx + 1);
    if (StringUtil.isEmpty(queryDetails)) {
        return;
    }
    try {
        QueryStringDecoder queryStringDecoder = new QueryStringDecoder(uri);
        Map<String, List<String>> params = queryStringDecoder.parameters();
        String error = NettyHttpUtil.getParamValue("error", params, "");
        if (!StringUtil.isEmpty(error)) {
            String userAgent = request.headers().get(USER_AGENT);
            String cookieString = request.headers().get(COOKIE);
            long time = System.currentTimeMillis() / 1000L;
            StringBuilder logLine = new StringBuilder();
            char tab = CharPool.TAB;
            logLine.append(ipAddress).append(tab);
            logLine.append(time).append(tab);
            logLine.append(userAgent).append(tab);
            logLine.append(queryDetails).append(tab);
            logLine.append(cookieString);
            logLine.append("\n");
            LogUtil.dumpErrorLogData(logLine.toString());
        }
    } catch (Exception e) {
    }
}
Example 8
Project: intellij-community-master  File: DiffHttpService.java View source code
@Override
@Nullable
public String execute(@NotNull QueryStringDecoder urlDecoder, @NotNull FullHttpRequest request, @NotNull ChannelHandlerContext context) throws IOException {
    final List<DiffContent> contents = new ArrayList<>();
    final List<String> titles = new ArrayList<>();
    boolean focused = true;
    String windowTitle = null;
    JsonReader reader = createJsonReader(request);
    if (reader.hasNext()) {
        String fileType = null;
        reader.beginObject();
        while (reader.hasNext()) {
            String name = reader.nextName();
            if (name.equals("fileType")) {
                fileType = reader.nextString();
            } else if (name.equals("focused")) {
                focused = reader.nextBoolean();
            } else if (name.equals("windowTitle")) {
                windowTitle = StringUtil.nullize(reader.nextString(), true);
            } else if (name.equals("contents")) {
                String error = readContent(reader, contents, titles, fileType);
                if (error != null) {
                    return error;
                }
            } else {
                reader.skipValue();
            }
        }
        reader.endObject();
    }
    if (contents.isEmpty()) {
        return "Empty request";
    }
    Project project = getLastFocusedOrOpenedProject();
    if (project == null) {
        // Argument for @NotNull parameter 'project' of com/intellij/openapi/components/ServiceManager.getService must not be null
        project = ProjectManager.getInstance().getDefaultProject();
    }
    final boolean finalFocused = focused;
    final String finalWindowTitle = windowTitle;
    final Project finalProject = project;
    ApplicationManager.getApplication().invokeLater(() -> {
        if (finalFocused) {
            ProjectUtil.focusProjectWindow(finalProject, true);
        }
        DiffManager.getInstance().showDiff(finalProject, new SimpleDiffRequest(StringUtil.notNullize(finalWindowTitle, "Diff Service"), contents, titles));
    }, project.getDisposed());
    sendOk(request, context);
    return null;
}
Example 9
Project: netty-socketio-master  File: WebSocketTransport.java View source code
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
    if (msg instanceof CloseWebSocketFrame) {
        ctx.channel().close();
        ReferenceCountUtil.release(msg);
    } else if (msg instanceof BinaryWebSocketFrame || msg instanceof TextWebSocketFrame) {
        ByteBufHolder frame = (ByteBufHolder) msg;
        ClientHead client = clientsBox.get(ctx.channel());
        if (client == null) {
            log.debug("Client with was already disconnected. Channel closed!");
            ctx.channel().close();
            frame.release();
            return;
        }
        ctx.pipeline().fireChannelRead(new PacketsMessage(client, frame.content(), Transport.WEBSOCKET));
        frame.release();
    } else if (msg instanceof FullHttpRequest) {
        FullHttpRequest req = (FullHttpRequest) msg;
        QueryStringDecoder queryDecoder = new QueryStringDecoder(req.uri());
        String path = queryDecoder.path();
        List<String> transport = queryDecoder.parameters().get("transport");
        List<String> sid = queryDecoder.parameters().get("sid");
        if (transport != null && NAME.equals(transport.get(0))) {
            try {
                if (!configuration.getTransports().contains(Transport.WEBSOCKET)) {
                    log.debug("{} transport not supported by configuration.", Transport.WEBSOCKET);
                    ctx.channel().close();
                    return;
                }
                if (sid != null && sid.get(0) != null) {
                    final UUID sessionId = UUID.fromString(sid.get(0));
                    handshake(ctx, sessionId, path, req);
                } else {
                    ClientHead client = ctx.channel().attr(ClientHead.CLIENT).get();
                    // first connection
                    handshake(ctx, client.getSessionId(), path, req);
                }
            } finally {
                req.release();
            }
        } else {
            ctx.fireChannelRead(msg);
        }
    } else {
        ctx.fireChannelRead(msg);
    }
}
Example 10
Project: yamcs-master  File: Router.java View source code
/**
     * At this point we do not have the full request (only the header) so we have to configure the pipeline either for receiving the 
     * full request or with route specific pipeline for receiving (large amounts of) data in case of dataLoad routes.
     * 
     * @param ctx
     * @param req
     * @param qsDecoder
     * @return true if the request has been scheduled and false if the request is invalid or there was another error
     */
public boolean scheduleExecution(ChannelHandlerContext ctx, HttpRequest req, QueryStringDecoder qsDecoder) {
    try {
        String uri = qsDecoder.path();
        RouteMatch match = matchURI(req.method(), uri);
        if (match == null) {
            log.info("No route matching URI: '{}'", req.uri());
            HttpRequestHandler.sendPlainTextError(ctx, req, HttpResponseStatus.NOT_FOUND);
            return false;
        }
        ctx.channel().attr(CTX_ROUTE_MATCH).set(match);
        RouteConfig rc = match.getRouteConfig();
        if (rc.isDataLoad()) {
            try {
                RouteHandler target = match.routeConfig.routeHandler;
                match.routeConfig.handle.invoke(target, ctx, req, match);
                if (HttpUtil.is100ContinueExpected(req)) {
                    ctx.writeAndFlush(CONTINUE.retainedDuplicate());
                }
            } catch (HttpException e) {
                log.warn("Error invoking data load handler on URI '{}': {}", req.uri(), e.getMessage());
                HttpRequestHandler.sendPlainTextError(ctx, req, e.getStatus(), e.getMessage());
            } catch (Throwable t) {
                log.error("Error invoking data load handler on URI: '{}'", req.uri(), t);
                HttpRequestHandler.sendPlainTextError(ctx, req, HttpResponseStatus.BAD_REQUEST);
            }
        } else {
            ctx.pipeline().addLast(new HttpContentCompressor());
            ctx.pipeline().addLast(new ChunkedWriteHandler());
            //this will cause the channelRead0 to be called as soon as the request is complete 
            // it will also reject requests whose body is greater than the MAX_BODY_SIZE) 
            ctx.pipeline().addLast(new HttpObjectAggregator(MAX_BODY_SIZE));
            ctx.pipeline().addLast(this);
            ctx.fireChannelRead(req);
        }
        return true;
    } catch (MethodNotAllowedException e) {
        log.info("Method {} not allowed for URI: '{}'", req.method(), req.uri());
        HttpRequestHandler.sendPlainTextError(ctx, req, HttpResponseStatus.BAD_REQUEST);
    }
    return false;
}
Example 11
Project: DemandSpike-master  File: HttpServerSimulator.java View source code
@Override
protected void doGet(ChannelHandlerContext ctx, HttpRequest httpReq) {
    getCount++;
    processTime();
    QueryStringDecoder reqDecoder = new QueryStringDecoder(httpReq.getUri());
    String data = reqDecoder.parameters().get("data").get(0);
    Payload payload = JSONSerializer.INSTANCE.fromString(data, Payload.class);
    writeJSON(ctx, httpReq, payload);
    this.writeContent(ctx, httpReq, "do get", "text/plain");
}
Example 12
Project: hadoop-master  File: WebHdfsHandler.java View source code
@Override
public void channelRead0(final ChannelHandlerContext ctx, final HttpRequest req) throws Exception {
    Preconditions.checkArgument(req.uri().startsWith(WEBHDFS_PREFIX));
    QueryStringDecoder queryString = new QueryStringDecoder(req.uri());
    params = new ParameterParser(queryString, conf);
    DataNodeUGIProvider ugiProvider = new DataNodeUGIProvider(params);
    ugi = ugiProvider.ugi();
    path = params.path();
    injectToken();
    ugi.doAs(new PrivilegedExceptionAction<Void>() {

        @Override
        public Void run() throws Exception {
            handle(ctx, req);
            return null;
        }
    });
}
Example 13
Project: hadoop-release-2.6.0-master  File: WebHdfsHandler.java View source code
@Override
public void channelRead0(final ChannelHandlerContext ctx, final HttpRequest req) throws Exception {
    Preconditions.checkArgument(req.getUri().startsWith(WEBHDFS_PREFIX));
    QueryStringDecoder queryString = new QueryStringDecoder(req.getUri());
    params = new ParameterParser(queryString, conf);
    DataNodeUGIProvider ugiProvider = new DataNodeUGIProvider(params);
    ugi = ugiProvider.ugi();
    path = params.path();
    injectToken();
    ugi.doAs(new PrivilegedExceptionAction<Void>() {

        @Override
        public Void run() throws Exception {
            handle(ctx, req);
            return null;
        }
    });
}
Example 14
Project: socketio-master  File: WebSocketHandler.java View source code
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
    if (msg instanceof FullHttpRequest) {
        FullHttpRequest req = (FullHttpRequest) msg;
        if (req.method() == HttpMethod.GET && req.uri().startsWith(connectPath)) {
            final QueryStringDecoder queryDecoder = new QueryStringDecoder(req.uri());
            final String requestPath = queryDecoder.path();
            if (log.isDebugEnabled())
                log.debug("Received HTTP {} handshake request: {} from channel: {}", getTransportType().getName(), req, ctx.channel());
            try {
                handshake(ctx, req, requestPath);
            } catch (Exception e) {
                log.error("Error during {} handshake : {}", getTransportType().getName(), e);
            } finally {
                ReferenceCountUtil.release(msg);
            }
            return;
        }
    } else if (msg instanceof WebSocketFrame && isCurrentHandlerSession(ctx)) {
        handleWebSocketFrame(ctx, (WebSocketFrame) msg);
        return;
    }
    ctx.fireChannelRead(msg);
}
Example 15
Project: vertx-shell-master  File: SockJSTtyConnection.java View source code
private static Vector getInitialSize(SockJSSocket socket) {
    QueryStringDecoder decoder = new QueryStringDecoder(socket.uri());
    Map<String, List<String>> params = decoder.parameters();
    try {
        int cols = getParamValue(params, "cols", 80);
        int rows = getParamValue(params, "rows", 24);
        return new Vector(cols, rows);
    } catch (Exception e) {
        return new Vector(80, 24);
    }
}
Example 16
Project: aerogear-simplepush-server-master  File: SockJsHandler.java View source code
@Override
public void messageReceived(final ChannelHandlerContext ctx, final FullHttpRequest request) throws Exception {
    final String path = new QueryStringDecoder(request.getUri()).path();
    for (SockJsServiceFactory factory : factories.values()) {
        if (path.startsWith(factory.config().prefix())) {
            handleService(factory, request, ctx);
            return;
        }
    }
    writeNotFoundResponse(request, ctx);
}
Example 17
Project: casely-master  File: LeanerServerHandler.java View source code
@Override
protected void messageReceived(ChannelHandlerContext ctx, FullHttpRequest request) throws Exception {
    QueryStringDecoder queryDecoder = new QueryStringDecoder(request.getUri());
    final String uri = request.getUri();
    HttpMethod method = request.getMethod();
    // 请求�数
    Map<String, String> params = null;
    // GET
    if (method == HttpMethod.GET) {
        Map<String, List<String>> getParams = queryDecoder.parameters();
        params = parseParams(getParams);
    } else // POST
    if (method == HttpMethod.POST) {
        ByteBuf content = request.content();
        if (content.isReadable()) {
            String param = content.toString(Charset.forName("UTF-8"));
            QueryStringDecoder postQueryStringDecoder = new QueryStringDecoder("/?" + param);
            Map<String, List<String>> postParams = postQueryStringDecoder.parameters();
            params = parseParams(postParams);
        }
    }
    final String path = queryDecoder.path();
    LOG.info("req, path:" + path + ", method:" + method + ", uri:" + uri);
    LOG.info("params:" + params.toString());
    writeResponse(request, ctx);
}
Example 18
Project: divconq-master  File: Request.java View source code
public void load(ChannelHandlerContext ctx, HttpRequest req) {
    this.method = req.getMethod();
    this.headers = req.headers();
    String value = req.headers().get(Names.COOKIE);
    if (StringUtil.isNotEmpty(value)) {
        Set<Cookie> cset = ServerCookieDecoder.STRICT.decode(value);
        for (Cookie cookie : cset) this.cookies.put(cookie.name(), cookie);
    }
    QueryStringDecoder decoderQuery = new QueryStringDecoder(req.getUri());
    // TODO decode
    this.parameters = decoderQuery.parameters();
    this.path = new CommonPath(QueryStringDecoder.decodeComponent(decoderQuery.path()));
    this.orgpath = this.path;
    this.orgrequri = QueryStringDecoder.decodeComponent(decoderQuery.uri());
    this.contentType = new ContentTypeParser(this.headers.get(Names.CONTENT_TYPE));
    if (Logger.isDebug()) {
        Logger.debug("Request Method " + this.method);
        for (Entry<String, String> ent : this.headers.entries()) {
            Logger.debug("Request header: " + ent.getKey() + ": " + ent.getValue());
        }
    }
}
Example 19
Project: Holmes-master  File: HttpFileRequestDecoder.java View source code
/**
     * {@inheritDoc}
     */
@Override
protected void decode(final ChannelHandlerContext context, final FullHttpRequest request, final List<Object> out) {
    HttpFileRequest fileRequest = null;
    // only GET requests are handled
    if (request.getMethod().equals(GET)) {
        QueryStringDecoder requestDecoder = new QueryStringDecoder(request.getUri());
        if (requestDecoder.path().startsWith(HTTP_CONTENT_REQUEST_PATH.toString()) && requestDecoder.parameters().get(HTTP_CONTENT_ID.toString()) != null) {
            // Content file request is valid if content is found in media index
            Optional<MediaNode> node = mediaManager.getNode(requestDecoder.parameters().get(HTTP_CONTENT_ID.toString()).get(0));
            if (node.isPresent() && node.get() instanceof ContentNode) {
                // Content found in media index, build a file request based on this content
                ContentNode contentNode = (ContentNode) node.get();
                fileRequest = new HttpFileRequest(request, new File(contentNode.getPath()), contentNode.getMimeType(), false);
            }
        } else {
            // Static file request is valid if requested file name has a valid mime type
            String requestedFileName = getRequestedFileName(requestDecoder);
            MimeType mimeType = mimeTypeManager.getMimeType(requestedFileName);
            if (mimeType != null) {
                // Found valid mime type, build a static file request
                fileRequest = new HttpFileRequest(request, new File(uiDirectory, requestedFileName), mimeType, true);
            }
        }
    }
    if (fileRequest != null) {
        // Add file request to message list
        out.add(fileRequest);
    } else {
        // Forward request to pipeline
        out.add(request.retain());
    }
}
Example 20
Project: http2-netty-master  File: Http2RequestHandler.java View source code
@Override
protected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest request) throws Exception {
    QueryStringDecoder queryString = new QueryStringDecoder(request.uri());
    String streamId = streamId(request);
    // Check arguments: path must match and latency parameter must be present
    if (!PATH.equals(queryString.path()) || missing(queryString, LATENCY)) {
        sendDummy(ctx, streamId);
        return;
    }
    int latency = latency(queryString);
    if (missing(queryString, X) && missing(queryString, Y)) {
        handlePage(ctx, streamId, latency);
    } else {
        handleImage(queryString, ctx, streamId, latency);
    }
}
Example 21
Project: jetstream-master  File: HttpRequestHandler.java View source code
private void debugHeadersAndCookies(HttpRequest request) {
    StringBuilder headersandaccokies = new StringBuilder();
    // echo the header for now
    for (Map.Entry<String, String> h : request.headers()) {
        headersandaccokies.append("HEADER: " + h.getKey() + " = " + h.getValue() + "\r\n");
    }
    headersandaccokies.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) {
                headersandaccokies.append("PARAM: " + key + " = " + val + "\r\n");
            }
        }
        headersandaccokies.append("\r\n");
    }
    debug(headersandaccokies.toString());
}
Example 22
Project: jsonapi-master  File: RouteMatcher.java View source code
FullHttpResponse getResponseForRoute(ChannelHandlerContext ctx, FullHttpRequest request, List<PatternBinding> bindings) {
    RoutedHttpRequest rreq = new RoutedHttpRequest(ctx, request);
    for (PatternBinding binding : bindings) {
        QueryStringDecoder uri = new QueryStringDecoder(request.getUri());
        NamedMatcher m = binding.pattern.matcher(uri.path());
        if (m.matches()) {
            Map<String, List<String>> params = new HashMap<String, List<String>>(m.groupCount());
            if (binding.paramNames != null) {
                // Named params
                for (String param : binding.paramNames) {
                    List<String> l = new ArrayList<String>();
                    l.add(m.group(param));
                    params.put(param, l);
                }
            } else {
                // Un-named params
                for (int i = 0; i < m.groupCount(); i++) {
                    List<String> l = new ArrayList<String>();
                    l.add(m.group(i + 1));
                    params.put("param" + i, l);
                }
            }
            uri.parameters().putAll(params);
            FullHttpResponse res = binding.handler.handle(rreq);
            return res;
        }
    }
    if (noMatchHandler != null) {
        return noMatchHandler.handle(rreq);
    }
    return new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.NOT_FOUND);
}
Example 23
Project: netty-master  File: HttpUploadServerHandler.java View source code
@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);
            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 a HttpPostRequestDecoder
        if (request.method().equals(HttpMethod.GET)) {
            // GET Method: should not try to create a 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());
            ctx.channel().close();
            return;
        }
        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: ");
            readingChunks = true;
        }
    }
    // 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());
                ctx.channel().close();
                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());
                readingChunks = false;
                reset();
            }
        }
    } else {
        writeResponse(ctx.channel());
    }
}
Example 24
Project: tajo-master  File: AdvancedDataRetriever.java View source code
@Override
public FileChunk[] handle(ChannelHandlerContext ctx, HttpRequest request) throws IOException {
    final Map<String, List<String>> params = new QueryStringDecoder(request.getUri()).parameters();
    if (!params.containsKey("qid")) {
        throw new FileNotFoundException("No such qid: " + params.containsKey("qid"));
    }
    if (params.containsKey("sid")) {
        List<FileChunk> chunks = Lists.newArrayList();
        List<String> taskIds = splitMaps(params.get("qid"));
        for (String eachTaskId : taskIds) {
            String[] taskIdSeqTokens = eachTaskId.split("_");
            ExecutionBlockId ebId = TajoIdUtils.createExecutionBlockId(params.get("sid").get(0));
            TaskId quid = new TaskId(ebId, Integer.parseInt(taskIdSeqTokens[0]));
            TaskAttemptId attemptId = new TaskAttemptId(quid, Integer.parseInt(taskIdSeqTokens[1]));
            RetrieverHandler handler = handlerMap.get(attemptId.toString());
            FileChunk chunk = handler.get(params);
            chunks.add(chunk);
        }
        return chunks.toArray(new FileChunk[chunks.size()]);
    } else {
        RetrieverHandler handler = handlerMap.get(params.get("qid").get(0));
        FileChunk chunk = handler.get(params);
        if (chunk == null) {
            if (params.containsKey("qid")) {
                // if there is no content corresponding to the query
                return null;
            } else {
                // if there is no
                throw new FileNotFoundException("No such a file corresponding to " + params.get("qid"));
            }
        }
        File file = chunk.getFile();
        if (file.isHidden() || !file.exists()) {
            throw new FileNotFoundException("No such file: " + file.getAbsolutePath());
        }
        if (!file.isFile()) {
            throw new FileAccessForbiddenException(file.getAbsolutePath() + " is not file");
        }
        return new FileChunk[] { chunk };
    }
}
Example 25
Project: weixin4j-master  File: WeixinMessageDecoder.java View source code
@Override
protected void decode(ChannelHandlerContext ctx, FullHttpRequest req, List<Object> out) throws WeixinException {
    String messageContent = req.content().toString(ServerToolkits.UTF_8);
    QueryStringDecoder queryDecoder = new QueryStringDecoder(req.uri(), true);
    HttpMethod method = req.method();
    logger.info("decode request:{} use {} method invoking", req.uri(), method);
    Map<String, List<String>> parameters = queryDecoder.parameters();
    EncryptType encryptType = parameters.containsKey("encrypt_type") ? EncryptType.valueOf(parameters.get("encrypt_type").get(0).toUpperCase()) : EncryptType.RAW;
    String echoStr = parameters.containsKey("echostr") ? parameters.get("echostr").get(0) : "";
    String timeStamp = parameters.containsKey("timestamp") ? parameters.get("timestamp").get(0) : "";
    String nonce = parameters.containsKey("nonce") ? parameters.get("nonce").get(0) : "";
    String signature = parameters.containsKey("signature") ? parameters.get("signature").get(0) : "";
    String msgSignature = parameters.containsKey("msg_signature") ? parameters.get("msg_signature").get(0) : "";
    String weixinId = parameters.containsKey("weixin_id") ? parameters.get("weixin_id").get(0) : "";
    AesToken aesToken = aesTokenMap.get(weixinId);
    String encryptContent = null;
    if (!ServerToolkits.isBlank(messageContent) && encryptType == EncryptType.AES) {
        if (ServerToolkits.isBlank(aesToken.getAesKey())) {
            throw new WeixinException("EncodingAESKey not be empty in safety(AES) mode");
        }
        EncryptMessageHandler encryptHandler = EncryptMessageHandler.parser(messageContent);
        encryptContent = encryptHandler.getEncryptContent();
        /**
			 * �业�第三方套件 ╮(╯_╰)╭
			 */
        if (aesToken.getWeixinId().startsWith("tj")) {
            aesToken = new AesToken(encryptHandler.getToUserName(), aesToken.getToken(), aesToken.getAesKey());
        }
        messageContent = MessageUtil.aesDecrypt(aesToken.getWeixinId(), aesToken.getAesKey(), encryptContent);
    }
    logger.info("read original message {}", messageContent);
    WeixinRequest request = new WeixinRequest(req.headers(), method, req.uri(), encryptType, echoStr, timeStamp, nonce, signature, msgSignature, messageContent, encryptContent, aesToken);
    request.setDecoderResult(req.decoderResult());
    request.setProtocolVersion(req.protocolVersion());
    out.add(request);
}
Example 26
Project: acteur-master  File: EventImpl.java View source code
@Override
public synchronized Map<String, String> getParametersAsMap() {
    if (paramsMap == null) {
        QueryStringDecoder queryStringDecoder = new QueryStringDecoder(req.getUri());
        Map<String, List<String>> params = queryStringDecoder.parameters();
        Map<String, String> result = new HashMap<>();
        for (Map.Entry<String, List<String>> e : params.entrySet()) {
            if (e.getValue().isEmpty()) {
                continue;
            }
            result.put(e.getKey(), e.getValue().get(0));
        }
        paramsMap = ImmutableSortedMap.copyOf(result);
    }
    return paramsMap;
}
Example 27
Project: Blaubot-master  File: WebsocketServerHandler.java View source code
private void handleHttpRequest(ChannelHandlerContext ctx, FullHttpRequest req) {
    // Handle a bad request.
    if (!req.getDecoderResult().isSuccess()) {
        sendHttpResponse(ctx, req, new DefaultFullHttpResponse(HTTP_1_1, BAD_REQUEST));
        return;
    }
    // Allow only GET methods.
    if (req.getMethod() != GET) {
        sendHttpResponse(ctx, req, new DefaultFullHttpResponse(HTTP_1_1, FORBIDDEN));
        return;
    }
    // Handshake
    WebSocketServerHandshakerFactory wsFactory = new WebSocketServerHandshakerFactory(getWebSocketLocation(req), null, true, BlaubotWebsocketAdapter.MAX_WEBSOCKET_FRAME_SIZE);
    handshaker = wsFactory.newHandshaker(req);
    if (handshaker == null) {
        WebSocketServerHandshakerFactory.sendUnsupportedVersionResponse(ctx.channel());
    } else {
        // extract uniqueDeviceId from query parameters
        final String requestUri = req.getUri();
        final QueryStringDecoder qstringDecoder = new QueryStringDecoder(requestUri);
        final List<String> uniqueDeviceIdParam = qstringDecoder.parameters().get(BlaubotWebsocketAdapter.URI_PARAM_UNIQUEDEVICEID);
        if (uniqueDeviceIdParam == null || uniqueDeviceIdParam.isEmpty()) {
            if (Log.logErrorMessages()) {
                Log.e(LOG_TAG, "UniqueDeviceId not provided while connecting WebSocket");
            }
            // send bad request (missing uniqueDeviceId param)
            sendHttpResponse(ctx, req, new DefaultFullHttpResponse(HTTP_1_1, BAD_REQUEST));
            return;
        }
        final String uniqueDeviceId = uniqueDeviceIdParam.get(0);
        final ChannelFuture handShakeFuture = handshaker.handshake(ctx.channel(), req);
        handShakeFuture.addListener(new ChannelFutureListener() {

            @Override
            public void operationComplete(ChannelFuture future) throws Exception {
                Channel channel = future.channel();
                BlaubotDevice remoteDevice = new BlaubotDevice(uniqueDeviceId);
                BlaubotWebsocketConnection blaubotWebsocketConnection = new BlaubotWebsocketConnection(remoteDevice, channel);
                blaubotConnectionsMap.put(channel, blaubotWebsocketConnection);
                incomingConnectionListener.get().onConnectionEstablished(blaubotWebsocketConnection);
            }
        });
    }
}
Example 28
Project: comsat-master  File: NettyHttpRequest.java View source code
@Override
public final Multimap<String, String> getParameters() {
    QueryStringDecoder queryStringDecoder;
    if (params == null) {
        queryStringDecoder = new QueryStringDecoder(req.getUri());
        final ImmutableMultimap.Builder<String, String> builder = ImmutableMultimap.builder();
        final Map<String, List<String>> parameters = queryStringDecoder.parameters();
        for (final String k : parameters.keySet()) builder.putAll(k, parameters.get(k));
        params = builder.build();
    }
    return params;
}
Example 29
Project: elasticsearch-master  File: Netty4HttpPipeliningHandlerTests.java View source code
@Override
protected void channelRead0(final ChannelHandlerContext ctx, final HttpPipelinedRequest pipelinedRequest) throws Exception {
    final QueryStringDecoder decoder;
    if (pipelinedRequest.last() instanceof FullHttpRequest) {
        final FullHttpRequest fullHttpRequest = (FullHttpRequest) pipelinedRequest.last();
        decoder = new QueryStringDecoder(fullHttpRequest.uri());
    } else {
        decoder = new QueryStringDecoder(AggregateUrisAndHeadersHandler.QUEUE_URI.poll());
    }
    final String uri = decoder.path().replace("/", "");
    final ByteBuf content = Unpooled.copiedBuffer(uri, StandardCharsets.UTF_8);
    final DefaultFullHttpResponse httpResponse = new DefaultFullHttpResponse(HTTP_1_1, OK, content);
    httpResponse.headers().add(CONTENT_LENGTH, content.readableBytes());
    final CountDownLatch waitingLatch = new CountDownLatch(1);
    waitingRequests.put(uri, waitingLatch);
    final CountDownLatch finishingLatch = new CountDownLatch(1);
    finishingRequests.put(uri, finishingLatch);
    executorService.submit(() -> {
        try {
            waitingLatch.await(1000, TimeUnit.SECONDS);
            final ChannelPromise promise = ctx.newPromise();
            ctx.write(pipelinedRequest.createHttpResponse(httpResponse, promise), promise);
            finishingLatch.countDown();
        } catch (InterruptedException e) {
            fail(e.toString());
        }
    });
}
Example 30
Project: flink-master  File: HttpRequestHandler.java View source code
@Override
public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) {
    try {
        if (msg instanceof HttpRequest) {
            currentRequest = (HttpRequest) msg;
            currentRequestPath = null;
            if (currentDecoder != null) {
                currentDecoder.destroy();
                currentDecoder = null;
            }
            if (currentRequest.getMethod() == HttpMethod.GET || currentRequest.getMethod() == HttpMethod.DELETE) {
                // directly delegate to the router
                ctx.fireChannelRead(currentRequest);
            } else if (currentRequest.getMethod() == HttpMethod.POST) {
                // POST comes in multiple objects. First the request, then the contents
                // keep the request and path for the remaining objects of the POST request
                currentRequestPath = new QueryStringDecoder(currentRequest.getUri(), ENCODING).path();
                currentDecoder = new HttpPostRequestDecoder(DATA_FACTORY, currentRequest, ENCODING);
            } else {
                throw new IOException("Unsupported HTTP method: " + currentRequest.getMethod().name());
            }
        } else if (currentDecoder != null && msg instanceof HttpContent) {
            // received new chunk, give it to the current decoder
            HttpContent chunk = (HttpContent) msg;
            currentDecoder.offer(chunk);
            try {
                while (currentDecoder.hasNext()) {
                    InterfaceHttpData data = currentDecoder.next();
                    if (data.getHttpDataType() == HttpDataType.FileUpload) {
                        DiskFileUpload file = (DiskFileUpload) data;
                        if (file.isCompleted()) {
                            String name = file.getFilename();
                            File target = new File(tmpDir, UUID.randomUUID() + "_" + name);
                            file.renameTo(target);
                            QueryStringEncoder encoder = new QueryStringEncoder(currentRequestPath);
                            encoder.addParam("filepath", target.getAbsolutePath());
                            encoder.addParam("filename", name);
                            currentRequest.setUri(encoder.toString());
                        }
                    }
                    data.release();
                }
            } catch (EndOfDataDecoderException ignored) {
            }
            if (chunk instanceof LastHttpContent) {
                HttpRequest request = currentRequest;
                currentRequest = null;
                currentRequestPath = null;
                currentDecoder.destroy();
                currentDecoder = null;
                // fire next channel handler
                ctx.fireChannelRead(request);
            }
        }
    } catch (Throwable t) {
        currentRequest = null;
        currentRequestPath = null;
        if (currentDecoder != null) {
            currentDecoder.destroy();
            currentDecoder = null;
        }
        if (ctx.channel().isActive()) {
            byte[] bytes = ExceptionUtils.stringifyException(t).getBytes(ENCODING);
            DefaultFullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.INTERNAL_SERVER_ERROR, Unpooled.wrappedBuffer(bytes));
            response.headers().set(HttpHeaders.Names.CONTENT_TYPE, "text/plain");
            response.headers().set(HttpHeaders.Names.CONTENT_LENGTH, response.content().readableBytes());
            ctx.writeAndFlush(response);
        }
    }
}
Example 31
Project: glowroot-master  File: BasicSmokeIT.java View source code
@Test
public void shouldCheckActiveTraceModalPages() throws Exception {
    App app = app();
    GlobalNavbar globalNavbar = globalNavbar();
    JvmSidebar jvmSidebar = new JvmSidebar(driver);
    app.open();
    globalNavbar.getJvmLink().click();
    jvmSidebar.getThreadDumpLink().click();
    WebElement viewTraceLink = Utils.withWait(driver, By.linkText("view trace"));
    String href = viewTraceLink.getAttribute("href");
    String traceId = new QueryStringDecoder(href).parameters().get("modal-trace-id").get(0);
    viewTraceLink.click();
    clickAroundInTraceModal(traceId, true);
}
Example 32
Project: JNetty-master  File: HttpServletRequestImpl.java View source code
/* ------------------------------------------------------------ */
/**
	 * Extract Parameters from query string and form HttpServletRequestImpl Body(application/x-www-form-urlencoded [POST
	 * | PUT])
	 */
public void extractParameters() {
    if (_paramsExtracted)
        return;
    _paramsExtracted = true;
    if (_parameters == null)
        _parameters = new HashMap<String, List<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 {
                                    // merge
                                    value.addAll(e.getValue());
                                    _parameters.put(e.getKey(), value);
                                }
                            }
                        }
                    }
                } catch (Exception e) {
                    if (LOG.isDebugEnabled())
                        e.printStackTrace();
                    else
                        LOG.warn(e.toString());
                }
            }
        }
    }
}
Example 33
Project: kinetic-java-master  File: HttpMessageServiceHandler.java View source code
@Override
protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
    int contentLength = 0;
    if (msg instanceof HttpRequest) {
        HttpRequest request = (HttpRequest) msg;
        logger.finest("protocol version: " + request.getProtocolVersion());
        logger.finest("host: " + getHost(request, "unknown"));
        logger.finest("REQUEST_URI: " + request.getUri());
        List<Map.Entry<String, String>> headers = request.headers().entries();
        String lenstr = request.headers().get(HttpHeaders.Names.CONTENT_LENGTH);
        contentLength = Integer.parseInt(lenstr);
        logger.finest("content length=" + contentLength);
        if (!headers.isEmpty()) {
            for (Map.Entry<String, String> h : request.headers().entries()) {
                String key = h.getKey();
                String value = h.getValue();
                logger.finest("HEADER: " + key + " = " + value);
            }
        }
        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) {
                    logger.finest("PARAM: " + key + " = " + val);
                }
            }
        }
    }
    // create extended builder
    ExtendedMessage.Builder extendedMessage = ExtendedMessage.newBuilder();
    if (msg instanceof HttpContent) {
        HttpContent httpContent = (HttpContent) msg;
        ByteBuf content = httpContent.content();
        if (content.isReadable()) {
            byte[] body = new byte[contentLength];
            content.getBytes(0, body);
            // read from serialized bytes
            extendedMessage.mergeFrom(body);
        }
        // build message
        ExtendedMessage extended = extendedMessage.build();
        if (logger.isLoggable(Level.FINEST)) {
            logger.finest("received request: " + extended);
        }
        // create kinetic message for processing
        KineticMessage km = new KineticMessage();
        // set interface message
        km.setMessage(extended.getInterfaceMessage());
        // get command bytes
        ByteString commandBytes = extendedMessage.getInterfaceMessage().getCommandBytes();
        // build command
        Command.Builder commandBuilder = Command.newBuilder();
        try {
            commandBuilder.mergeFrom(commandBytes);
            km.setCommand(commandBuilder.build());
        } catch (InvalidProtocolBufferException e) {
            logger.log(Level.WARNING, e.getMessage(), e);
        }
        // set value
        if (extended.hasValue()) {
            km.setValue(extended.getValue().toByteArray());
        }
        // process request
        KineticMessage kmresp = this.lcservice.processRequest(km);
        // construct response message
        ExtendedMessage.Builder extendedResponse = ExtendedMessage.newBuilder();
        // set interface message
        extendedResponse.setInterfaceMessage((Message.Builder) kmresp.getMessage());
        // set value
        if (kmresp.getValue() != null) {
            extendedResponse.setValue(ByteString.copyFrom(kmresp.getValue()));
        }
        // get serialized value
        ByteBuf data = Unpooled.copiedBuffer(extendedResponse.build().toByteArray());
        FullHttpResponse httpResponse = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, data);
        httpResponse.headers().set(CONTENT_TYPE, "application/octet-stream");
        httpResponse.headers().set(HttpHeaders.Names.CONTENT_ENCODING, HttpHeaders.Values.BINARY);
        httpResponse.headers().set(CONTENT_LENGTH, httpResponse.content().readableBytes());
        httpResponse.headers().set(CONNECTION, HttpHeaders.Values.KEEP_ALIVE);
        // send response message
        ctx.writeAndFlush(httpResponse);
        if (logger.isLoggable(Level.FINEST)) {
            logger.finest("wrote and flushed response: " + kmresp);
        }
    }
}
Example 34
Project: moco-master  File: DefaultHttpRequest.java View source code
public static HttpRequest newRequest(final FullHttpRequest request) {
    QueryStringDecoder decoder = new QueryStringDecoder(request.uri());
    ImmutableMap<String, String[]> queries = toQueries(decoder);
    return builder().withVersion(HttpProtocolVersion.versionOf(request.protocolVersion().text())).withHeaders(collectHeaders(request.headers())).withMethod(HttpMethod.valueOf(request.method().toString().toUpperCase())).withUri(decoder.path()).withQueries(queries).withContent(toMessageContent(request)).build();
}
Example 35
Project: netty.book.kor-master  File: HttpSnoopServerHandler.java View source code
@Override
protected void channelRead0(ChannelHandlerContext ctx, Object msg) {
    if (msg instanceof HttpRequest) {
        HttpRequest request = this.request = (HttpRequest) msg;
        if (HttpHeaders.is100ContinueExpected(request)) {
            send100Continue(ctx);
        }
        buf.setLength(0);
        buf.append("WELCOME TO THE WILD WILD WEB SERVER\r\n");
        buf.append("===================================\r\n");
        buf.append("VERSION: ").append(request.protocolVersion()).append("\r\n");
        buf.append("HOSTNAME: ").append(HttpHeaders.getHost(request, "unknown")).append("\r\n");
        buf.append("REQUEST_URI: ").append(request.uri()).append("\r\n\r\n");
        HttpHeaders headers = request.headers();
        if (!headers.isEmpty()) {
            for (Map.Entry<String, String> h : headers) {
                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.uri());
        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.content();
        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");
            }
            if (!writeResponse(trailer, ctx)) {
                // If keep-alive is off, close the connection once the content is fully written.
                ctx.writeAndFlush(Unpooled.EMPTY_BUFFER).addListener(ChannelFutureListener.CLOSE);
            }
        }
    }
}
Example 36
Project: netty4.0.27Learn-master  File: HttpUploadServerHandler.java View source code
@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.getUri());
        if (!uri.getPath().startsWith("/form")) {
            // Write Menu
            writeMenu(ctx);
            return;
        }
        responseContent.setLength(0);
        responseContent.append("WELCOME TO THE WILD WILD WEB SERVER\r\n");
        responseContent.append("===================================\r\n");
        responseContent.append("VERSION: " + request.getProtocolVersion().text() + "\r\n");
        responseContent.append("REQUEST_URI: " + request.getUri() + "\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(COOKIE);
        if (value == null) {
            cookies = Collections.emptySet();
        } else {
            cookies = CookieDecoder.decode(value);
        }
        for (Cookie cookie : cookies) {
            responseContent.append("COOKIE: " + cookie + "\r\n");
        }
        responseContent.append("\r\n\r\n");
        QueryStringDecoder decoderQuery = new QueryStringDecoder(request.getUri());
        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 (request.getMethod().equals(HttpMethod.GET)) {
            // GET Method: should not try to create a 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());
            ctx.channel().close();
            return;
        } catch (IncompatibleDataDecoderException e1) {
            responseContent.append(e1.getMessage());
            responseContent.append("\r\n\r\nEND OF GET CONTENT\r\n");
            writeResponse(ctx.channel());
            return;
        }
        readingChunks = HttpHeaders.isTransferEncodingChunked(request);
        responseContent.append("Is Chunked: " + readingChunks + "\r\n");
        responseContent.append("IsMultipart: " + decoder.isMultipart() + "\r\n");
        if (readingChunks) {
            // Chunk version
            responseContent.append("Chunks: ");
            readingChunks = true;
        }
    }
    // 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());
                ctx.channel().close();
                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());
                readingChunks = false;
                reset();
            }
        }
    } else {
        writeResponse(ctx.channel());
    }
}
Example 37
Project: netty4study-master  File: HttpUploadServerHandler.java View source code
@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.getUri());
        if (!uri.getPath().startsWith("/form")) {
            // Write Menu
            writeMenu(ctx);
            return;
        }
        responseContent.setLength(0);
        responseContent.append("WELCOME TO THE WILD WILD WEB SERVER\r\n");
        responseContent.append("===================================\r\n");
        responseContent.append("VERSION: " + request.getProtocolVersion().text() + "\r\n");
        responseContent.append("REQUEST_URI: " + request.getUri() + "\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(COOKIE);
        if (value == null) {
            cookies = Collections.emptySet();
        } else {
            cookies = CookieDecoder.decode(value);
        }
        for (Cookie cookie : cookies) {
            responseContent.append("COOKIE: " + cookie.toString() + "\r\n");
        }
        responseContent.append("\r\n\r\n");
        QueryStringDecoder decoderQuery = new QueryStringDecoder(request.getUri());
        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 a HttpPostRequestDecoder
        try {
            decoder = new HttpPostRequestDecoder(factory, request);
        } catch (ErrorDataDecoderException e1) {
            e1.printStackTrace();
            responseContent.append(e1.getMessage());
            writeResponse(ctx.channel());
            ctx.channel().close();
            return;
        } catch (IncompatibleDataDecoderException e1) {
            responseContent.append(e1.getMessage());
            responseContent.append("\r\n\r\nEND OF GET CONTENT\r\n");
            writeResponse(ctx.channel());
            return;
        }
        readingChunks = HttpHeaders.isTransferEncodingChunked(request);
        responseContent.append("Is Chunked: " + readingChunks + "\r\n");
        responseContent.append("IsMultipart: " + decoder.isMultipart() + "\r\n");
        if (readingChunks) {
            // Chunk version
            responseContent.append("Chunks: ");
            readingChunks = true;
        }
    }
    // 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());
                ctx.channel().close();
                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());
                readingChunks = false;
                reset();
            }
        }
    }
}
Example 38
Project: rakam-master  File: ProxyWebService.java View source code
@Override
public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) throws Exception {
    RakamHttpRequest rakamHttpRequest = ctx.channel().attr(CONNECTION_ATTR).get();
    Channel channel = rakamHttpRequest.context().channel();
    FullHttpResponse resp = (FullHttpResponse) msg;
    String contentType = resp.headers().get(HttpHeaders.Names.CONTENT_TYPE);
    Charset charset = null;
    if (contentType != null) {
        Iterable<String> split = Splitter.on(";").trimResults().split(contentType);
        for (String item : split) {
            List<String> charsetStr = new QueryStringDecoder("?" + item).parameters().get("charset");
            if (charsetStr != null) {
                charset = Charset.forName(charsetStr.get(0));
                break;
            }
        }
    }
    if (charset == null) {
        charset = CharsetUtil.UTF_8;
    }
    String content = resp.content().toString(charset);
    Document parse = Jsoup.parse(content, "", Parser.htmlParser());
    String url = rakamHttpRequest.params().get("u").get(0);
    parse.head().prepend(String.format("<base href='%s'>", url));
    parse.head().prepend("<link href=\"/static/components/codemirror/lib/codemirror.css\" media=\"screen\" rel=\"stylesheet\" />");
    parse.head().prepend("<link href=\"/static/embed/jquery-ui-theme.css\" media=\"screen\" rel=\"stylesheet\" />");
    parse.head().prepend("<link href=\"/static/components/bootstrap-colorpicker/css/colorpicker.css\" media=\"screen\" rel=\"stylesheet\" />");
    parse.head().prepend("<link href=\"/static/embed/rakam-inline-editor.css\" media=\"screen\" rel=\"stylesheet\" />");
    parse.head().prepend("<script src=\"/static/embed/rakam-inline-editor.js\"></script>");
    parse.head().prepend("<script src=\"/static/components/bootstrap-colorpicker/js/bootstrap-colorpicker.js\"></script>");
    parse.head().prepend("<script src=\"/static/components/codemirror/mode/xml/xml.js\"></script>");
    parse.head().prepend("<script src=\"/static/components/codemirror/mode/javascript/javascript.js\"></script>");
    parse.head().prepend("<script src=\"/static/components/codemirror/mode/css/css.js\"></script>");
    parse.head().prepend("<script src=\"/static/components/codemirror/mode/vbscript/vbscript.js\"></script>");
    parse.head().prepend("<script src=\"/static/components/codemirror/mode/htmlmixed/htmlmixed.js\"></script>");
    parse.head().prepend("<script src=\"/static/components/codemirror/lib/codemirror.js\"></script>");
    parse.head().prepend("<script src=\"/static/components/jquery-ui/jquery-ui.min.js\"></script>");
    parse.head().prepend("<script src=\"/static/components/jquery/dist/jquery.min.js\"></script>");
    byte[] bytes = parse.outerHtml().getBytes(charset);
    DefaultFullHttpResponse copy = new DefaultFullHttpResponse(resp.getProtocolVersion(), resp.getStatus(), Unpooled.wrappedBuffer(bytes));
    copy.headers().set(resp.headers());
    copy.trailingHeaders().set(resp.trailingHeaders());
    copy.headers().set(HttpHeaders.Names.CONTENT_LENGTH, bytes.length);
    String location = resp.headers().get(HttpHeaders.Names.LOCATION);
    copy.headers().set("X-Frame-Options", "ALLOWALL");
    if (location != null && (location.startsWith("/") || (resp.getStatus().code() == 301 || resp.getStatus().code() == 302))) {
        if (location.startsWith("/")) {
            location = url.trim() + location;
        }
        copy.headers().set(HttpHeaders.Names.LOCATION, CharMatcher.is('/').trimTrailingFrom("/ui/proxy?u=" + location) + '/');
    }
    channel.writeAndFlush(copy).addListener(ChannelFutureListener.CLOSE);
}
Example 39
Project: vesta-id-generator-master  File: VestaRestNettyServerHandler.java View source code
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
    if (!(msg instanceof HttpRequest))
        return;
    HttpRequest req = (HttpRequest) msg;
    if (is100ContinueExpected(req)) {
        ctx.write(new DefaultFullHttpResponse(HTTP_1_1, CONTINUE));
    }
    URI uri = new URI(req.getUri());
    if (log.isDebugEnabled())
        log.debug("request uri==" + uri.getPath());
    long id = -1;
    long time = -1;
    long version = -1;
    long type = -1;
    long genmethod = -1;
    long machine = -1;
    long seq = -1;
    QueryStringDecoder decoderQuery = new QueryStringDecoder(req.getUri());
    Map<String, List<String>> uriAttributes = decoderQuery.parameters();
    for (Entry<String, List<String>> attr : uriAttributes.entrySet()) {
        for (String attrVal : attr.getValue()) {
            if (log.isDebugEnabled())
                log.debug("Request Parameter: " + attr.getKey() + '=' + attrVal);
            if (ID.equals(attr.getKey())) {
                id = Long.parseLong(attrVal);
            } else if (TIME.equals(attr.getKey())) {
                time = Long.parseLong(attrVal);
            } else if (VERSION.equals(attr.getKey())) {
                version = Long.parseLong(attrVal);
            } else if (TYPE.equals(attr.getKey())) {
                type = Long.parseLong(attrVal);
            } else if (GENMETHOD.equals(attr.getKey())) {
                genmethod = Long.parseLong(attrVal);
            } else if (MACHINE.equals(attr.getKey())) {
                machine = Long.parseLong(attrVal);
            } else if (SEQ.equals(attr.getKey())) {
                seq = Long.parseLong(attrVal);
            }
        }
    }
    StringBuffer sbContent = new StringBuffer();
    if (ACTION_GENID.equals(uri.getPath())) {
        long idl = idService.genId();
        if (log.isTraceEnabled())
            log.trace("Generated id: " + idl);
        sbContent.append(idl);
    } else if (ACTION_EXPID.equals(uri.getPath())) {
        Id ido = idService.expId(id);
        if (log.isTraceEnabled())
            log.trace("Explained id: " + ido);
        JSONObject jo = JSONObject.fromObject(ido);
        sbContent.append(jo);
    } else if (ACTION_TRANSTIME.equals(uri.getPath())) {
        Date date = idService.transTime(time);
        if (log.isTraceEnabled())
            log.trace("Time: " + date);
        sbContent.append(date);
    } else if (ACTION_MAKEID.equals(uri.getPath())) {
        long madeId = -1;
        if (time == -1 || seq == -1)
            sbContent.append("Both time and seq are required.");
        else if (version == -1) {
            if (type == -1) {
                if (genmethod == -1) {
                    if (machine == -1) {
                        madeId = idService.makeId(time, seq);
                    } else {
                        madeId = idService.makeId(machine, time, seq);
                    }
                } else {
                    madeId = idService.makeId(genmethod, machine, time, seq);
                }
            } else {
                madeId = idService.makeId(type, genmethod, machine, time, seq);
            }
        } else {
            madeId = idService.makeId(version, type, genmethod, machine, time, seq);
        }
        if (log.isTraceEnabled())
            log.trace("Id: " + madeId);
        sbContent.append(madeId);
    } else {
        sbContent.append("\r\n");
        sbContent.append("Please input right URI:");
        sbContent.append("\r\n");
        sbContent.append("    Example 1: http://ip:port/genid");
        sbContent.append("\r\n");
        sbContent.append("    Example 2: http://ip:port/expid?id=?");
        sbContent.append("\r\n");
        sbContent.append("    Example 3: http://ip:port/transtime?time=?");
        sbContent.append("\r\n");
        sbContent.append("    Example 4: http://ip:port/makeid?version=?&type=?&genmethod=?&machine=?&time=?&seq=?");
    }
    if (log.isTraceEnabled())
        log.trace("Message body: " + sbContent);
    FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, OK, Unpooled.wrappedBuffer(sbContent.toString().getBytes(Charset.forName("UTF-8"))));
    response.headers().set(CONTENT_TYPE, "text/plain");
    response.headers().set(CONTENT_LENGTH, response.content().readableBytes());
    boolean keepAlive = isKeepAlive(req);
    if (log.isTraceEnabled())
        log.trace("Keep Alive: " + keepAlive);
    if (!keepAlive) {
        ctx.write(response).addListener(ChannelFutureListener.CLOSE);
    } else {
        response.headers().set(CONNECTION, Values.KEEP_ALIVE);
        ctx.write(response);
    }
}
Example 40
Project: armeria-master  File: ArmeriaCallFactoryTest.java View source code
@Override
protected void doGet(ServiceRequestContext ctx, HttpRequest req, HttpResponseWriter res) throws Exception {
    req.aggregate().handle(voidFunction(( aReq,  cause) -> {
        Map<String, List<String>> params = new QueryStringDecoder(aReq.path()).parameters();
        res.respond(HttpStatus.OK, MediaType.JSON_UTF_8, "{\"name\":\"" + params.get("name").get(0) + "\", " + "\"age\":" + params.get("age").get(0) + '}');
    }));
}
Example 41
Project: cloudstack-master  File: HttpUploadServerHandler.java View source code
@Override
public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) throws Exception {
    if (msg instanceof HttpRequest) {
        HttpRequest request = this.request = (HttpRequest) msg;
        responseContent.setLength(0);
        if (request.getMethod().equals(HttpMethod.POST)) {
            URI uri = new URI(request.getUri());
            String signature = null;
            String expires = null;
            String metadata = null;
            String hostname = null;
            long contentLength = 0;
            for (Entry<String, String> entry : request.headers()) {
                switch(entry.getKey()) {
                    case HEADER_SIGNATURE:
                        signature = entry.getValue();
                        break;
                    case HEADER_METADATA:
                        metadata = entry.getValue();
                        break;
                    case HEADER_EXPIRES:
                        expires = entry.getValue();
                        break;
                    case HEADER_HOST:
                        hostname = entry.getValue();
                        break;
                    case HttpHeaders.Names.CONTENT_LENGTH:
                        contentLength = Long.parseLong(entry.getValue());
                        break;
                }
            }
            logger.info("HEADER: signature=" + signature);
            logger.info("HEADER: metadata=" + metadata);
            logger.info("HEADER: expires=" + expires);
            logger.info("HEADER: hostname=" + hostname);
            logger.info("HEADER: Content-Length=" + contentLength);
            QueryStringDecoder decoderQuery = new QueryStringDecoder(uri);
            Map<String, List<String>> uriAttributes = decoderQuery.parameters();
            uuid = uriAttributes.get("uuid").get(0);
            logger.info("URI: uuid=" + uuid);
            UploadEntity uploadEntity = null;
            try {
                // Validate the request here
                storageResource.validatePostUploadRequest(signature, metadata, expires, hostname, contentLength, uuid);
                //create an upload entity. This will fail if entity already exists.
                uploadEntity = storageResource.createUploadEntity(uuid, metadata, contentLength);
            } catch (InvalidParameterValueException ex) {
                logger.error("post request validation failed", ex);
                responseContent.append(ex.getMessage());
                writeResponse(ctx.channel(), HttpResponseStatus.BAD_REQUEST);
                requestProcessed = true;
                return;
            }
            if (uploadEntity == null) {
                logger.error("Unable to create upload entity. An exception occurred.");
                responseContent.append("Internal Server Error");
                writeResponse(ctx.channel(), HttpResponseStatus.INTERNAL_SERVER_ERROR);
                requestProcessed = true;
                return;
            }
            //set the base directory to download the file
            DiskFileUpload.baseDirectory = uploadEntity.getInstallPathPrefix();
            logger.info("base directory: " + DiskFileUpload.baseDirectory);
            try {
                //initialize the decoder
                decoder = new HttpPostRequestDecoder(factory, request);
            } catch (ErrorDataDecoderExceptionIncompatibleDataDecoderException |  e) {
                logger.error("exception while initialising the decoder", e);
                responseContent.append(e.getMessage());
                writeResponse(ctx.channel(), HttpResponseStatus.INTERNAL_SERVER_ERROR);
                requestProcessed = true;
                return;
            }
        } else {
            logger.warn("received a get request");
            responseContent.append("only post requests are allowed");
            writeResponse(ctx.channel(), HttpResponseStatus.BAD_REQUEST);
            requestProcessed = true;
            return;
        }
    }
    // check if the decoder was constructed before
    if (decoder != null) {
        if (msg instanceof HttpContent) {
            // New chunk is received
            HttpContent chunk = (HttpContent) msg;
            try {
                decoder.offer(chunk);
            } catch (ErrorDataDecoderException e) {
                logger.error("data decoding exception", e);
                responseContent.append(e.getMessage());
                writeResponse(ctx.channel(), HttpResponseStatus.INTERNAL_SERVER_ERROR);
                requestProcessed = true;
                return;
            }
            if (chunk instanceof LastHttpContent) {
                writeResponse(ctx.channel(), readFileUploadData());
                reset();
            }
        }
    }
}
Example 42
Project: detective-master  File: HttpServerTask.java View source code
@Override
protected void channelRead0(ChannelHandlerContext ctx, Object msg) {
    if (msg instanceof HttpRequest) {
        HttpRequest request = this.request = (HttpRequest) msg;
        if (is100ContinueExpected(request)) {
            send100Continue(ctx);
        }
        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");
        HttpHeaders headers = request.headers();
        if (!headers.isEmpty()) {
            for (Map.Entry<String, String> h : headers) {
                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.content();
        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(trailer, ctx);
        }
    }
}
Example 43
Project: Fuga-Framework-master  File: NettyHttpServerHandler.java View source code
@Override
public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) {
    if (msg instanceof HttpRequest) {
        this.httprequest = (HttpRequest) msg;
        requestBuilder = new Request.Builder();
        requestBuilder.requestMethod(RequestMethod.valueOf(httprequest.method().name())).uri(httprequest.uri());
        try {
            // Decode URI GET query parameters
            QueryStringDecoder queryStringDecoder = new QueryStringDecoder(httprequest.uri());
            requestBuilder.path(queryStringDecoder.path()).query(queryStringDecoder.parameters());
            // Process cookies
            List<Cookie> cookies = new ArrayList<>();
            String cookieString = httprequest.headers().get(HttpHeaderNames.COOKIE);
            if (cookieString != null) {
                ServerCookieDecoder.STRICT.decode(cookieString).stream().forEach(( cookie) -> {
                    cookies.add(NettyCookieConverter.convertToFuga(cookie));
                });
            }
            requestBuilder.cookies(cookies);
            // Process headers
            Map<String, String> headers = new HashMap<>();
            httprequest.headers().entries().stream().forEach(( e) -> {
                headers.put(e.getKey(), e.getValue());
            });
            requestBuilder.headers(headers);
            // Get real parameters from frontend HTTP server
            boolean isSecure = false;
            SocketAddress remoteAddress = ctx.channel().remoteAddress();
            if (forwarded == 1) {
                // RFC7239
                if (headers.containsKey("Forwarded")) {
                    String fwdStr = headers.get("Forwarded");
                    List<String> fwdparams = Stream.of(fwdStr.split("; ")).map(( s) -> s.trim()).collect(Collectors.toList());
                    for (String f : fwdparams) {
                        String p[] = f.split("=");
                        switch(p[0]) {
                            case "for":
                                remoteAddress = parseAddress(p[1]);
                                break;
                            case "proto":
                                isSecure = p[1].equals("https");
                                break;
                        }
                    }
                }
            } else if (forwarded == 0) {
                // X-Forwarded
                if (headers.containsKey("X-Forwarded-Proto")) {
                    if (headers.get("X-Forwarded-Proto").equalsIgnoreCase("https")) {
                        isSecure = true;
                    }
                }
                if (headers.containsKey("X-Forwarded-For")) {
                    String fwdfor = headers.get("X-Forwarded-For");
                    remoteAddress = parseAddress(fwdfor.contains(",") ? fwdfor.substring(0, fwdfor.indexOf(',')) : fwdfor);
                } else if (headers.containsKey("X-Real-IP")) {
                    remoteAddress = parseAddress(headers.get("X-Real-IP"));
                }
            }
            requestBuilder.remoteAddress(remoteAddress).isSecure(isSecure);
            if (headers.containsKey("Accept-Language")) {
                String acceptLanguage = headers.get("Accept-Language");
                List<Locale> acceptLocales = Stream.of(acceptLanguage.split(",")).map(( s) -> s.contains(";") ? s.substring(0, s.indexOf(";")).trim() : s.trim()).map(( s) -> s.contains("-") ? new Locale(s.split("-")[0], s.split("-")[0]) : new Locale(s)).collect(Collectors.toList());
                requestBuilder.acceptLocales(acceptLocales);
            }
            if (httprequest.method().equals(HttpMethod.GET)) {
                processResponse(ctx);
                return;
            }
            decoder = true;
        } catch (Exception e) {
            processClientError(ctx, requestBuilder.build(), 400);
            return;
        }
    }
    if (msg instanceof HttpContent && decoder) {
        HttpContent httpContent = (HttpContent) msg;
        contentBuffer.writeBytes(httpContent.content());
        if (httpContent instanceof LastHttpContent) {
            requestBuilder.content(new BufferedContent(contentBuffer.nioBuffer()));
            processResponse(ctx);
        }
    }
}
Example 44
Project: hydra-master  File: HttpStaticFileHandler.java View source code
@Override
public void channelRead0(ChannelHandlerContext ctx, FullHttpRequest request) throws Exception {
    if (!request.getDecoderResult().isSuccess()) {
        sendError(ctx, BAD_REQUEST);
        return;
    }
    // since we are using send file, we must remove the compression unit or it will donk out
    ChannelHandler compressor = ctx.pipeline().get("compressor");
    if (compressor != null) {
        ctx.pipeline().remove("compressor");
    }
    if (request.getMethod() != GET) {
        sendError(ctx, METHOD_NOT_ALLOWED);
        return;
    }
    QueryStringDecoder urlDecoder = new QueryStringDecoder(request.getUri());
    String target = urlDecoder.path();
    final String path = sanitizeUri(target);
    if (path == null) {
        sendError(ctx, FORBIDDEN);
        return;
    }
    Path file = Paths.get(webDir + path);
    log.trace("trying to serve static file {}", file);
    if (Files.isHidden(file) || Files.notExists(file)) {
        sendError(ctx, NOT_FOUND);
        return;
    }
    if (!Files.isRegularFile(file)) {
        sendError(ctx, FORBIDDEN);
        return;
    }
    log.trace("cache validation occuring for {}", file);
    // Cache Validation
    String ifModifiedSince = request.headers().get(IF_MODIFIED_SINCE);
    if (ifModifiedSince != null && !ifModifiedSince.isEmpty()) {
        SimpleDateFormat dateFormatter = new SimpleDateFormat(HttpUtils.HTTP_DATE_FORMAT, Locale.US);
        Date ifModifiedSinceDate = dateFormatter.parse(ifModifiedSince);
        // Only compare up to the second because the datetime format we send to the client
        // does not have milliseconds
        long ifModifiedSinceDateSeconds = ifModifiedSinceDate.getTime() / 1000;
        long fileLastModifiedSeconds = Files.getLastModifiedTime(file).toMillis() / 1000;
        if (ifModifiedSinceDateSeconds == fileLastModifiedSeconds) {
            sendNotModified(ctx);
            return;
        }
    }
    log.trace("sending {}", file);
    FileChannel fileChannel;
    try {
        fileChannel = FileChannel.open(file, StandardOpenOption.READ);
    } catch (IOException fnfe) {
        sendError(ctx, NOT_FOUND);
        return;
    }
    long fileLength = fileChannel.size();
    HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK);
    setContentLength(response, fileLength);
    setContentTypeHeader(response, file);
    try {
        setDateAndCacheHeaders(response, file);
    } catch (IOException ioex) {
        fileChannel.close();
        sendError(ctx, NOT_FOUND);
        return;
    }
    if (isKeepAlive(request)) {
        response.headers().set(CONNECTION, HttpHeaders.Values.KEEP_ALIVE);
    }
    // Write the initial line and the header.
    ctx.write(response);
    // Write the content.
    ctx.write(new DefaultFileRegion(fileChannel, 0, fileLength));
    // Write the end marker
    ChannelFuture lastContentFuture = ctx.writeAndFlush(LastHttpContent.EMPTY_LAST_CONTENT);
    // Decide whether to close the connection or not.
    if (!isKeepAlive(request)) {
        // Close the connection when the whole content is written out.
        lastContentFuture.addListener(ChannelFutureListener.CLOSE);
    } else {
        ctx.pipeline().remove(this);
        if (compressor != null) {
            ctx.pipeline().addBefore("query", "compressor", compressor);
        }
    }
}
Example 45
Project: jframe-master  File: AbstractHandler.java View source code
protected void readHttpRequest(HttpRequest msg) throws Exception {
    HttpRequest req = (HttpRequest) msg;
    AbstractHandler.this.req = req;
    if (!req.getMethod().equals(HttpMethod.POST) || !isValidHeaders(req.headers())) {
        finish(ctx);
        return;
    }
    keepAlive = HttpHeaders.isKeepAlive(req);
    String encoding = req.headers().get(HttpHeaders.Names.ACCEPT_ENCODING);
    if (encoding != null && encoding.indexOf("gzip") != -1) {
        gzip = true;
    }
    QueryStringDecoder queryStringDecoder = new QueryStringDecoder(req.getUri());
    _params = queryStringDecoder.parameters();
    if (LOG.isDebugEnabled()) {
        LOG.debug("Receive request -> {}", req.getUri());
    }
}
Example 46
Project: vertx-jersey-master  File: DefaultJerseyHandler.java View source code
protected URI getAbsoluteURI(HttpServerRequest vertxRequest) {
    URI absoluteUri;
    String hostAndPort = vertxRequest.headers().get(HttpHeaders.HOST);
    try {
        absoluteUri = URI.create(vertxRequest.absoluteURI());
        if (hostAndPort != null && !hostAndPort.isEmpty()) {
            String[] parts = hostAndPort.split(":");
            String host = parts[0];
            int port = (parts.length > 1 ? Integer.valueOf(parts[1]) : -1);
            if (!host.equalsIgnoreCase(absoluteUri.getHost()) || port != absoluteUri.getPort()) {
                absoluteUri = UriBuilder.fromUri(absoluteUri).host(host).port(port).build();
            }
        }
        return absoluteUri;
    } catch (IllegalArgumentException e) {
        String uri = vertxRequest.uri();
        if (!uri.contains("?")) {
            throw e;
        }
        try {
            logger.warn("Invalid URI: " + uri + ".  Attempting to parse query string.", e);
            QueryStringDecoder decoder = new QueryStringDecoder(uri);
            StringBuilder sb = new StringBuilder(decoder.path() + "?");
            for (Map.Entry<String, List<String>> p : decoder.parameters().entrySet()) {
                for (String value : p.getValue()) {
                    sb.append(p.getKey()).append("=").append(URLEncoder.encode(value, "UTF-8"));
                }
            }
            return URI.create(sb.toString());
        } catch (Exception e1) {
            throw new RuntimeException(e1);
        }
    }
}
Example 47
Project: vertx-rest-storage-master  File: EventBusAdapter.java View source code
@Override
public MultiMap params() {
    if (params == null) {
        QueryStringDecoder queryStringDecoder = new QueryStringDecoder(uri());
        Map<String, List<String>> prms = queryStringDecoder.parameters();
        params = new CaseInsensitiveHeaders();
        if (!prms.isEmpty()) {
            for (Map.Entry<String, List<String>> entry : prms.entrySet()) {
                params.add(entry.getKey(), entry.getValue());
            }
        }
    }
    return params;
}
Example 48
Project: vert.x-master  File: HttpUtils.java View source code
static MultiMap params(String uri) {
    QueryStringDecoder queryStringDecoder = new QueryStringDecoder(uri);
    Map<String, List<String>> prms = queryStringDecoder.parameters();
    MultiMap params = new CaseInsensitiveHeaders();
    if (!prms.isEmpty()) {
        for (Map.Entry<String, List<String>> entry : prms.entrySet()) {
            params.add(entry.getKey(), entry.getValue());
        }
    }
    return params;
}
Example 49
Project: dcache-master  File: HttpPoolRequestHandler.java View source code
/**
     * Get the mover channel for a certain HTTP request. The mover
     * channel is identified by UUID generated upon mover start and
     * sent back to the door as a part of the address info.
     *
     * @param request HttpRequest that was sent by the client
     * @param exclusive True if the mover channel exclusively is to be opened
     *                  in exclusive mode. False if the mover channel can be
     *                  shared with other requests.
     * @return Mover channel for specified UUID
     * @throws IllegalArgumentException Request did not include UUID or no
     *         mover channel found for UUID in the request
     */
private NettyTransferService<HttpProtocolInfo>.NettyMoverChannel<HttpProtocolInfo> open(HttpRequest request, boolean exclusive) throws IllegalArgumentException, URISyntaxException {
    QueryStringDecoder queryStringDecoder = new QueryStringDecoder(request.getUri());
    Map<String, List<String>> params = queryStringDecoder.parameters();
    if (!params.containsKey(HttpTransferService.UUID_QUERY_PARAM)) {
        if (!request.getUri().equals("/favicon.ico")) {
            _logger.error("Received request without UUID in the query " + "string. Request-URI was {}", request.getUri());
        }
        throw new IllegalArgumentException("Query string does not include any UUID.");
    }
    List<String> uuidList = params.get(HttpTransferService.UUID_QUERY_PARAM);
    if (uuidList.isEmpty()) {
        throw new IllegalArgumentException("UUID parameter does not include any value.");
    }
    UUID uuid = UUID.fromString(uuidList.get(0));
    NettyTransferService<HttpProtocolInfo>.NettyMoverChannel<HttpProtocolInfo> file = _server.openFile(uuid, exclusive);
    if (file == null) {
        throw new IllegalArgumentException("Request is no longer valid. " + "Please resubmit to door.");
    }
    URI uri = new URI(request.getUri());
    FsPath requestedFile = FsPath.create(uri.getPath());
    FsPath transferFile = FsPath.create(file.getProtocolInfo().getPath());
    if (!requestedFile.equals(transferFile)) {
        _logger.warn("Received an illegal request for file {}, while serving {}", requestedFile, transferFile);
        throw new IllegalArgumentException("The file you specified does " + "not match the UUID you specified!");
    }
    _files.add(file);
    return file;
}
Example 50
Project: disthene-reader-master  File: RenderParameters.java View source code
public static RenderParameters parse(HttpRequest request) throws ParameterParsingException {
    //todo: do it in some beautiful way
    String parameterString;
    if (request.getMethod().equals(HttpMethod.POST)) {
        ((HttpContent) request).content().resetReaderIndex();
        byte[] bytes = new byte[((HttpContent) request).content().readableBytes()];
        ((HttpContent) request).content().readBytes(bytes);
        parameterString = "/render/?" + new String(bytes);
    } else {
        parameterString = request.getUri();
    }
    logger.debug(parameterString);
    QueryStringDecoder queryStringDecoder = new QueryStringDecoder(parameterString);
    RenderParameters parameters = new RenderParameters();
    if (queryStringDecoder.parameters().get("tenant") != null) {
        parameters.setTenant(queryStringDecoder.parameters().get("tenant").get(0));
    } else {
        // assume tenant "NONE"
        parameters.setTenant("NONE");
        logger.debug("No tenant in request. Assuming NONE");
    }
    if (queryStringDecoder.parameters().get("target") != null) {
        for (String path : queryStringDecoder.parameters().get("target")) {
            parameters.getTargets().add(path);
        }
    }
    // First decode tz and default to UTC
    if (queryStringDecoder.parameters().get("tz") != null) {
        try {
            parameters.setTz(DateTimeZone.forID(queryStringDecoder.parameters().get("tz").get(0)));
        } catch (Exception e) {
            throw new InvalidParameterValueException("Timezone not found: " + queryStringDecoder.parameters().get("tz").get(0));
        }
    } else {
        parameters.setTz(DateTimeZone.UTC);
    }
    // parse from defaulting to -1d
    if (queryStringDecoder.parameters().get("from") != null) {
        try {
            parameters.setFrom(parseExtendedTime(queryStringDecoder.parameters().get("from").get(0), parameters.getTz()));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("DateTime format not recognized (from): " + queryStringDecoder.parameters().get("from").get(0));
        }
    } else {
        // default to -1d
        parameters.setFrom((System.currentTimeMillis() / 1000L) - 86400);
    }
    // parse until
    if ((queryStringDecoder.parameters().get("until") != null) || (queryStringDecoder.parameters().get("until").get(0).equals("now"))) {
        try {
            parameters.setUntil(parseExtendedTime(queryStringDecoder.parameters().get("until").get(0), parameters.getTz()));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("DateTime format not recognized (until): " + queryStringDecoder.parameters().get("until").get(0));
        }
    } else {
        // default to now
        parameters.setUntil(System.currentTimeMillis() / 1000L);
    }
    // Prohibiting "from greater than until"
    if (parameters.getFrom() > parameters.getUntil()) {
        parameters.setFrom(parameters.getUntil());
    }
    // Prohibiting "until in the future"
    if (parameters.getUntil() > (System.currentTimeMillis() / 1000L)) {
        parameters.setUntil(System.currentTimeMillis() / 1000L);
    }
    // parse format defaulting to PNG
    if (queryStringDecoder.parameters().get("format") != null) {
        try {
            parameters.setFormat(Format.valueOf(queryStringDecoder.parameters().get("format").get(0).toUpperCase()));
        } catch (IllegalArgumentException e) {
            throw new InvalidParameterValueException("Format not supported: " + queryStringDecoder.parameters().get("format").get(0));
        }
    } else {
        // default to now
        parameters.setFormat(Format.PNG);
    }
    if (queryStringDecoder.parameters().get("maxDataPoints") != null) {
        try {
            parameters.setMaxDataPoints(Integer.valueOf(queryStringDecoder.parameters().get("maxDataPoints").get(0)));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("fontSize format : " + queryStringDecoder.parameters().get("fontSize").get(0));
        }
    }
    //*************************************************************************************************************
    if (queryStringDecoder.parameters().get("areaAlpha") != null) {
        try {
            Float areaAlpha = Float.valueOf(queryStringDecoder.parameters().get("areaAlpha").get(0));
            if (areaAlpha < 0.)
                areaAlpha = 0f;
            if (areaAlpha > 1.)
                areaAlpha = 1f;
            parameters.getImageParameters().setAreaAlpha(areaAlpha);
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("AreaAlpha format : " + queryStringDecoder.parameters().get("areaAlpha").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("areaMode") != null) {
        try {
            parameters.getImageParameters().setAreaMode(ImageParameters.AreaMode.valueOf(queryStringDecoder.parameters().get("areaMode").get(0).toUpperCase()));
        } catch (IllegalArgumentException e) {
            throw new InvalidParameterValueException("Unknown area mode : " + queryStringDecoder.parameters().get("areaMode").get(0).toUpperCase());
        }
    }
    if (queryStringDecoder.parameters().get("bgcolor") != null) {
        Color color = ColorTable.getColorByName(queryStringDecoder.parameters().get("bgcolor").get(0).replaceAll("^\"|\"$", ""));
        if (color != null)
            parameters.getImageParameters().setBackgroundColor(color);
    }
    if (queryStringDecoder.parameters().get("colorList") != null) {
        String colorsString = queryStringDecoder.parameters().get("colorList").get(0).replaceAll("^\"|\"$", "");
        String[] split = colorsString.split(",");
        List<Color> colors = new ArrayList<>();
        for (String c : split) {
            Color color = ColorTable.getColorByName(c);
            if (color != null)
                colors.add(color);
        }
        if (colors.size() > 0) {
            parameters.getImageParameters().setColorList(colors);
        }
    }
    if (queryStringDecoder.parameters().get("drawNullAsZero") != null) {
        parameters.getImageParameters().setDrawNullAsZero(Boolean.parseBoolean(queryStringDecoder.parameters().get("drawNullAsZero").get(0)));
    }
    if (queryStringDecoder.parameters().get("fgcolor") != null) {
        Color color = ColorTable.getColorByName(queryStringDecoder.parameters().get("fgcolor").get(0).replaceAll("^\"|\"$", ""));
        if (color != null)
            parameters.getImageParameters().setForegroundColor(color);
    }
    if (queryStringDecoder.parameters().get("fontBold") != null) {
        parameters.getImageParameters().setFontBold(Boolean.parseBoolean(queryStringDecoder.parameters().get("fontBold").get(0)));
    }
    if (queryStringDecoder.parameters().get("fontItalic") != null) {
        parameters.getImageParameters().setFontItalic(Boolean.parseBoolean(queryStringDecoder.parameters().get("fontItalic").get(0)));
    }
    if (queryStringDecoder.parameters().get("fontName") != null) {
        parameters.getImageParameters().setFontName(queryStringDecoder.parameters().get("fontName").get(0).toLowerCase());
    }
    if (queryStringDecoder.parameters().get("fontSize") != null) {
        try {
            parameters.getImageParameters().setFontSize(Float.valueOf(queryStringDecoder.parameters().get("fontSize").get(0)));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("fontSize format : " + queryStringDecoder.parameters().get("fontSize").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("graphOnly") != null) {
        parameters.getImageParameters().setGraphOnly(Boolean.parseBoolean(queryStringDecoder.parameters().get("graphOnly").get(0)));
    }
    if (queryStringDecoder.parameters().get("graphType") != null) {
        try {
            parameters.getImageParameters().setGraphType(Graph.GraphType.valueOf(queryStringDecoder.parameters().get("graphType").get(0).toUpperCase()));
        } catch (IllegalArgumentException e) {
            throw new InvalidParameterValueException("Unknown graphType : " + queryStringDecoder.parameters().get("graphType").get(0).toUpperCase());
        }
    }
    if (queryStringDecoder.parameters().get("hideLegend") != null) {
        boolean hideLegend = Boolean.parseBoolean(queryStringDecoder.parameters().get("hideLegend").get(0));
        if (hideLegend) {
            parameters.getImageParameters().setHideLegendCompletely(true);
        } else {
            parameters.getImageParameters().setHideLegend(false);
        }
    }
    if (queryStringDecoder.parameters().get("hideAxes") != null) {
        parameters.getImageParameters().setHideAxes(Boolean.parseBoolean(queryStringDecoder.parameters().get("hideAxes").get(0)));
    }
    if (queryStringDecoder.parameters().get("hideYAxes") != null) {
        parameters.getImageParameters().setHideYAxis(Boolean.parseBoolean(queryStringDecoder.parameters().get("hideYAxes").get(0)));
    }
    if (queryStringDecoder.parameters().get("hideGrid") != null) {
        parameters.getImageParameters().setHideGrid(Boolean.parseBoolean(queryStringDecoder.parameters().get("hideGrid").get(0)));
    }
    if (queryStringDecoder.parameters().get("height") != null) {
        try {
            parameters.getImageParameters().setHeight(Integer.valueOf(queryStringDecoder.parameters().get("height").get(0)));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("Height format : " + queryStringDecoder.parameters().get("height").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("leftColor") != null) {
        Color color = ColorTable.getColorByName(queryStringDecoder.parameters().get("leftColor").get(0).replaceAll("^\"|\"$", ""));
        if (color != null)
            parameters.getImageParameters().setLeftColor(color);
    }
    if (queryStringDecoder.parameters().get("leftDashed") != null) {
        parameters.getImageParameters().setLeftDashed(Boolean.parseBoolean(queryStringDecoder.parameters().get("leftDashed").get(0)));
    }
    if (queryStringDecoder.parameters().get("leftWidth") != null) {
        try {
            parameters.getImageParameters().setLeftWidth(Double.valueOf(queryStringDecoder.parameters().get("leftWidth").get(0)));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("leftWidth format : " + queryStringDecoder.parameters().get("leftWidth").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("lineMode") != null) {
        try {
            parameters.getImageParameters().setLineMode(ImageParameters.LineMode.valueOf(queryStringDecoder.parameters().get("lineMode").get(0).toUpperCase()));
        } catch (IllegalArgumentException e) {
            throw new InvalidParameterValueException("Unknown line mode : " + queryStringDecoder.parameters().get("lineMode").get(0).toUpperCase());
        }
    }
    if (queryStringDecoder.parameters().get("lineWidth") != null) {
        try {
            parameters.getImageParameters().setLineWidth(Double.valueOf(queryStringDecoder.parameters().get("lineWidth").get(0)));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("lineWidth format : " + queryStringDecoder.parameters().get("lineWidth").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("logBase") != null) {
        try {
            Double logBase = Double.valueOf(queryStringDecoder.parameters().get("logBase").get(0));
            if (logBase > 0 && logBase != 1) {
                parameters.getImageParameters().setLogBase(logBase);
            }
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("lineWidth format : " + queryStringDecoder.parameters().get("lineWidth").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("majorGridLineColor") != null) {
        Color color = ColorTable.getColorByName(queryStringDecoder.parameters().get("majorGridLineColor").get(0).replaceAll("^\"|\"$", ""));
        if (color != null)
            parameters.getImageParameters().setMajorGridLineColor(color);
    }
    if (queryStringDecoder.parameters().get("margin") != null) {
        try {
            Double margin = Double.valueOf(queryStringDecoder.parameters().get("margin").get(0));
            if (margin > 0) {
                parameters.getImageParameters().setMargin(margin.intValue());
            }
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("margin format : " + queryStringDecoder.parameters().get("margin").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("minorGridLineColor") != null) {
        Color color = ColorTable.getColorByName(queryStringDecoder.parameters().get("minorGridLineColor").get(0).replaceAll("^\"|\"$", ""));
        if (color != null)
            parameters.getImageParameters().setMinorGridLineColor(color);
    }
    if (queryStringDecoder.parameters().get("minorY") != null) {
        try {
            Double minorY = Double.valueOf(queryStringDecoder.parameters().get("minorY").get(0));
            if (minorY >= 0) {
                parameters.getImageParameters().setMinorY(minorY.intValue());
            }
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("minorY format : " + queryStringDecoder.parameters().get("minorY").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("minXStep") != null) {
        try {
            Double minXStep = Double.valueOf(queryStringDecoder.parameters().get("minXStep").get(0));
            if (minXStep >= 0) {
                parameters.getImageParameters().setMinXStep(minXStep.intValue());
            }
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("minXStep format : " + queryStringDecoder.parameters().get("minXStep").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("pieMode") != null) {
        try {
            parameters.getImageParameters().setPieMode(Graph.PieMode.valueOf(queryStringDecoder.parameters().get("pieMode").get(0).toUpperCase()));
        } catch (IllegalArgumentException e) {
            throw new InvalidParameterValueException("Unknown pieMode : " + queryStringDecoder.parameters().get("pieMode").get(0).toUpperCase());
        }
    }
    if (queryStringDecoder.parameters().get("pieLabels") != null) {
        try {
            parameters.getImageParameters().setPieLabelsOrientation(Graph.PieLabelsOrientation.valueOf(queryStringDecoder.parameters().get("pieLabels").get(0).toUpperCase()));
        } catch (IllegalArgumentException e) {
            throw new InvalidParameterValueException("Unknown pieLabels : " + queryStringDecoder.parameters().get("pieLabels").get(0).toUpperCase());
        }
    }
    if (queryStringDecoder.parameters().get("rightColor") != null) {
        Color color = ColorTable.getColorByName(queryStringDecoder.parameters().get("rightColor").get(0).replaceAll("^\"|\"$", ""));
        if (color != null)
            parameters.getImageParameters().setRightColor(color);
    }
    if (queryStringDecoder.parameters().get("rightDashed") != null) {
        parameters.getImageParameters().setRightDashed(Boolean.parseBoolean(queryStringDecoder.parameters().get("rightDashed").get(0)));
    }
    if (queryStringDecoder.parameters().get("rightWidth") != null) {
        try {
            parameters.getImageParameters().setRightWidth(Double.valueOf(queryStringDecoder.parameters().get("rightWidth").get(0)));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("rightWidth format : " + queryStringDecoder.parameters().get("rightWidth").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("title") != null) {
        parameters.getImageParameters().setTitle(queryStringDecoder.parameters().get("title").get(0).replaceAll("^\"|\"$", ""));
    }
    if (queryStringDecoder.parameters().get("uniqueLegend") != null) {
        parameters.getImageParameters().setUniqueLegend(Boolean.parseBoolean(queryStringDecoder.parameters().get("uniqueLegend").get(0)));
    }
    if (queryStringDecoder.parameters().get("valueLabels") != null) {
        try {
            parameters.getImageParameters().setPieLabelsStyle(Graph.PieLabelsStyle.valueOf(queryStringDecoder.parameters().get("valueLabels").get(0).toUpperCase()));
        } catch (IllegalArgumentException e) {
            throw new InvalidParameterValueException("Unknown valueLabels : " + queryStringDecoder.parameters().get("valueLabels").get(0).toUpperCase());
        }
    }
    if (queryStringDecoder.parameters().get("valueLabelsMin") != null) {
        try {
            parameters.getImageParameters().setPieLabelsMin(Double.valueOf(queryStringDecoder.parameters().get("valueLabelsMin").get(0)));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("valueLabelsMin format : " + queryStringDecoder.parameters().get("valueLabelsMin").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("vtitle") != null) {
        parameters.getImageParameters().setVerticalTitle(queryStringDecoder.parameters().get("vtitle").get(0).replaceAll("^\"|\"$", ""));
    }
    if (queryStringDecoder.parameters().get("vtitleRight") != null) {
        parameters.getImageParameters().setVerticalTitleRight(queryStringDecoder.parameters().get("vtitleRight").get(0).replaceAll("^\"|\"$", ""));
    }
    if (queryStringDecoder.parameters().get("width") != null) {
        try {
            parameters.getImageParameters().setWidth(Integer.valueOf(queryStringDecoder.parameters().get("width").get(0)));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("Width format : " + queryStringDecoder.parameters().get("width").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("yAxisSide") != null) {
        try {
            parameters.getImageParameters().setyAxisSide(ImageParameters.Side.valueOf(queryStringDecoder.parameters().get("yAxisSide").get(0).toUpperCase()));
        } catch (IllegalArgumentException e) {
            throw new InvalidParameterValueException("Unknown y axis side : " + queryStringDecoder.parameters().get("yAxisSide").get(0).toUpperCase());
        }
    }
    if (queryStringDecoder.parameters().get("yMax") != null) {
        try {
            parameters.getImageParameters().setyMax(Double.valueOf(queryStringDecoder.parameters().get("yMax").get(0)));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("yMax format : " + queryStringDecoder.parameters().get("yMax").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("yMaxLeft") != null) {
        try {
            parameters.getImageParameters().setyMaxLeft(Double.valueOf(queryStringDecoder.parameters().get("yMaxLeft").get(0)));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("yMaxLeft format : " + queryStringDecoder.parameters().get("yMaxLeft").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("yMaxRight") != null) {
        try {
            parameters.getImageParameters().setyMaxRight(Double.valueOf(queryStringDecoder.parameters().get("yMaxRight").get(0)));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("yMaxRight format : " + queryStringDecoder.parameters().get("yMaxRight").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("yMin") != null) {
        try {
            parameters.getImageParameters().setyMin(Double.valueOf(queryStringDecoder.parameters().get("yMin").get(0)));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("yMin format : " + queryStringDecoder.parameters().get("yMin").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("yMinLeft") != null) {
        try {
            parameters.getImageParameters().setyMinLeft(Double.valueOf(queryStringDecoder.parameters().get("yMinLeft").get(0)));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("yMinLeft format : " + queryStringDecoder.parameters().get("yMinLeft").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("yMinRight") != null) {
        try {
            parameters.getImageParameters().setyMinRight(Double.valueOf(queryStringDecoder.parameters().get("yMinRight").get(0)));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("yMinRight format : " + queryStringDecoder.parameters().get("yMinRight").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("yStep") != null) {
        try {
            parameters.getImageParameters().setyStep(Double.valueOf(queryStringDecoder.parameters().get("yStep").get(0)));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("yStep format : " + queryStringDecoder.parameters().get("yStep").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("yStepLeft") != null) {
        try {
            parameters.getImageParameters().setyStepLeft(Double.valueOf(queryStringDecoder.parameters().get("yStepLeft").get(0)));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("yStepLeft format : " + queryStringDecoder.parameters().get("yStepLeft").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("yStepRight") != null) {
        try {
            parameters.getImageParameters().setyStepRight(Double.valueOf(queryStringDecoder.parameters().get("yStepRight").get(0)));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("yStepRight format : " + queryStringDecoder.parameters().get("yStepRight").get(0));
        }
    }
    if (queryStringDecoder.parameters().get("yUnitSystem") != null) {
        try {
            parameters.getImageParameters().setyUnitSystem(UnitSystem.valueOf(queryStringDecoder.parameters().get("yUnitSystem").get(0).toUpperCase()));
        } catch (IllegalArgumentException e) {
            throw new InvalidParameterValueException("Unknown yUnitSystem : " + queryStringDecoder.parameters().get("yUnitSystem").get(0).toUpperCase());
        }
    }
    if (queryStringDecoder.parameters().get("connectedLimit") != null) {
        try {
            parameters.getImageParameters().setConnectedLimit(Integer.valueOf(queryStringDecoder.parameters().get("connectedLimit").get(0)));
        } catch (NumberFormatException e) {
            throw new InvalidParameterValueException("ConnectedLimit format : " + queryStringDecoder.parameters().get("connectedLimit").get(0));
        }
    }
    return parameters;
}
Example 51
Project: netty-router-master  File: Router.java View source code
//--------------------------------------------------------------------------
/**
     * If there's no match, returns the result with {@link #notFound(Object) notFound}
     * as the target if it is set, otherwise returns {@code null}.
     */
public RouteResult<T> route(HttpMethod method, String uri) {
    QueryStringDecoder decoder = new QueryStringDecoder(uri);
    String[] tokens = Path.removeSlashesAtBothEnds(decoder.path()).split("/");
    MethodlessRouter<T> router = routers.get(method);
    if (router == null) {
        router = anyMethodRouter;
    }
    RouteResult<T> ret = router.route(tokens);
    if (ret != null) {
        return new RouteResult(ret.target(), ret.pathParams(), decoder.parameters());
    }
    if (router != anyMethodRouter) {
        ret = anyMethodRouter.route(tokens);
        if (ret != null) {
            return new RouteResult(ret.target(), ret.pathParams(), decoder.parameters());
        }
    }
    if (notFound != null) {
        // Collections.<String, String>emptyMap()
        return new RouteResult<T>(notFound, new HashMap<String, String>(), decoder.parameters());
    }
    return null;
}
Example 52
Project: tinkerpop-master  File: HttpGremlinEndpointHandler.java View source code
private static Quartet<String, Map<String, Object>, String, Map<String, String>> getRequestArguments(final FullHttpRequest request) {
    if (request.getMethod() == GET) {
        final QueryStringDecoder decoder = new QueryStringDecoder(request.getUri());
        final List<String> gremlinParms = decoder.parameters().get(Tokens.ARGS_GREMLIN);
        if (null == gremlinParms || gremlinParms.size() == 0)
            throw new IllegalArgumentException("no gremlin script supplied");
        final String script = gremlinParms.get(0);
        if (script.isEmpty())
            throw new IllegalArgumentException("no gremlin script supplied");
        // query string parameters - take the first instance of a key only - ignore the rest
        final Map<String, Object> bindings = new HashMap<>();
        decoder.parameters().entrySet().stream().filter( kv -> kv.getKey().startsWith(ARGS_BINDINGS_DOT)).forEach( kv -> bindings.put(kv.getKey().substring(ARGS_BINDINGS_DOT.length()), kv.getValue().get(0)));
        // don't allow both rebindings and aliases parameters as they are the same thing. aliases were introduced
        // as of 3.1.0 as a replacement for rebindings. this check can be removed when rebindings are completely
        // removed from the protocol
        final boolean hasRebindings = decoder.parameters().entrySet().stream().anyMatch( kv -> kv.getKey().startsWith(ARGS_REBINDINGS_DOT));
        final boolean hasAliases = decoder.parameters().entrySet().stream().anyMatch( kv -> kv.getKey().startsWith(ARGS_ALIASES_DOT));
        if (hasRebindings && hasAliases)
            throw new IllegalArgumentException("prefer use of the 'aliases' parameter over 'rebindings' and do not use both");
        final Map<String, String> aliases = new HashMap<>();
        final String rebindingOrAliasParameter = hasRebindings ? ARGS_REBINDINGS_DOT : ARGS_ALIASES_DOT;
        decoder.parameters().entrySet().stream().filter( kv -> kv.getKey().startsWith(rebindingOrAliasParameter)).forEach( kv -> aliases.put(kv.getKey().substring(rebindingOrAliasParameter.length()), kv.getValue().get(0)));
        final List<String> languageParms = decoder.parameters().get(Tokens.ARGS_LANGUAGE);
        final String language = (null == languageParms || languageParms.size() == 0) ? null : languageParms.get(0);
        return Quartet.with(script, bindings, language, aliases);
    } else {
        final JsonNode body;
        try {
            body = mapper.readTree(request.content().toString(CharsetUtil.UTF_8));
        } catch (IOException ioe) {
            throw new IllegalArgumentException("body could not be parsed", ioe);
        }
        final JsonNode scriptNode = body.get(Tokens.ARGS_GREMLIN);
        if (null == scriptNode)
            throw new IllegalArgumentException("no gremlin script supplied");
        final JsonNode bindingsNode = body.get(Tokens.ARGS_BINDINGS);
        if (bindingsNode != null && !bindingsNode.isObject())
            throw new IllegalArgumentException("bindings must be a Map");
        final Map<String, Object> bindings = new HashMap<>();
        if (bindingsNode != null)
            bindingsNode.fields().forEachRemaining( kv -> bindings.put(kv.getKey(), fromJsonNode(kv.getValue())));
        // don't allow both rebindings and aliases parameters as they are the same thing. aliases were introduced
        // as of 3.1.0 as a replacement for rebindings. this check can be removed when rebindings are completely
        // removed from the protocol
        final boolean hasRebindings = body.has(Tokens.ARGS_REBINDINGS);
        final boolean hasAliases = body.has(Tokens.ARGS_ALIASES);
        if (hasRebindings && hasAliases)
            throw new IllegalArgumentException("prefer use of the 'aliases' parameter over 'rebindings' and do not use both");
        final String rebindingOrAliasParameter = hasRebindings ? Tokens.ARGS_REBINDINGS : Tokens.ARGS_ALIASES;
        final JsonNode aliasesNode = body.get(rebindingOrAliasParameter);
        if (aliasesNode != null && !aliasesNode.isObject())
            throw new IllegalArgumentException("aliases must be a Map");
        final Map<String, String> aliases = new HashMap<>();
        if (aliasesNode != null)
            aliasesNode.fields().forEachRemaining( kv -> aliases.put(kv.getKey(), kv.getValue().asText()));
        final JsonNode languageNode = body.get(Tokens.ARGS_LANGUAGE);
        final String language = null == languageNode ? null : languageNode.asText();
        return Quartet.with(scriptNode.asText(), bindings, language, aliases);
    }
}
Example 53
Project: AndroidHttpCapture-master  File: HarCaptureFilter.java View source code
//TODO: add unit tests for these utility-like capture() methods
protected void captureQueryParameters(HttpRequest httpRequest) {
    // 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 = null;
    queryStringDecoder = new QueryStringDecoder(httpRequest.getUri(), Charset.forName("UTF-8"));
    try {
        for (Map.Entry<String, List<String>> entry : queryStringDecoder.parameters().entrySet()) {
            for (String value : entry.getValue()) {
                harEntry.getRequest().getQueryString().add(new HarNameValuePair(entry.getKey(), value));
            }
        }
    } catch (IllegalArgumentException e) {
        harEntry.setComment("Unable to decode query parameters on URI: " + httpRequest.getUri());
        log.info("Unable to decode query parameters on URI: " + httpRequest.getUri(), e);
    }
}
Example 54
Project: WaarpGatewayFtp-master  File: HttpSslHandler.java View source code
private void getParams() {
    if (request.method() == HttpMethod.GET) {
        params = null;
    } else if (request.method() == HttpMethod.POST) {
        ByteBuf content = request.content();
        if (content.isReadable()) {
            String param = content.toString(WaarpStringUtils.UTF8);
            QueryStringDecoder queryStringDecoder2 = new QueryStringDecoder("/?" + param);
            params = queryStringDecoder2.parameters();
        } else {
            params = null;
        }
    }
}
Example 55
Project: WaarpR66-master  File: HttpSslHandler.java View source code
private String Spooled(boolean detailed) {
    // XXXSPOOLEDXXX
    String spooled = REQUEST.Spooled.readFileUnique(this);
    String uri = null;
    if (detailed) {
        uri = "SpooledDetailed.html";
    } else {
        uri = "Spooled.html";
    }
    QueryStringDecoder queryStringDecoder = new QueryStringDecoder(request.uri());
    params = queryStringDecoder.parameters();
    String name = null;
    if (params.containsKey("name")) {
        name = getTrimValue("name");
    }
    int istatus = 0;
    if (params.containsKey("status")) {
        String status = getTrimValue("status");
        try {
            istatus = Integer.parseInt(status);
        } catch (NumberFormatException e1) {
            istatus = 0;
        }
    }
    if (name != null && !name.isEmpty()) {
        // name is specified
        uri = request.uri();
        if (istatus != 0) {
            uri += "&status=" + istatus;
        }
        StringBuilder builder = SpooledInformTask.buildSpooledUniqueTable(uri, name);
        return spooled.replace("XXXSPOOLEDXXX", builder.toString());
    } else {
        if (istatus != 0) {
            uri += "&status=" + istatus;
        }
        StringBuilder builder = SpooledInformTask.buildSpooledTable(detailed, istatus, uri);
        return spooled.replace("XXXSPOOLEDXXX", builder.toString());
    }
}
Example 56
Project: karyon-master  File: QueryStringDecoder.java View source code
public io.netty.handler.codec.http.QueryStringDecoder nettyDecoder() {
    return nettyDecoder;
}
Example 57
Project: dungproxy-master  File: EndpointHandler.java View source code
protected Map<String, List<String>> getRequestParam(String uri) {
    //默认使用UTF_8解�
    QueryStringDecoder decoder = new QueryStringDecoder(uri);
    return decoder.parameters();
}
Example 58
Project: Neddy-master  File: RequestConverter.java View source code
private HttpParams convertParameters() {
    QueryStringDecoder decoder = new QueryStringDecoder(nettyRequest.getUri());
    return new HttpParams(decoder.parameters());
}
Example 59
Project: ratpack-master  File: TokenPathBinder.java View source code
private String decodeURIComponent(String s) {
    try {
        return QueryStringDecoder.decodeComponent(s.replace("+", "%2B"));
    } catch (IllegalArgumentException cause) {
        throw new InvalidPathEncodingException(cause);
    }
}
Example 60
Project: arquillian-extension-warp-master  File: HttpRequestWrapper.java View source code
@Override
public Map<String, List<String>> getQueryParameters() {
    if (queryParameters == null) {
        QueryStringDecoder queryStringDecoder = new QueryStringDecoder(request.getUri());
        queryParameters = queryStringDecoder.parameters();
    }
    return Collections.unmodifiableMap(queryParameters);
}
Example 61
Project: locomotive-master  File: LocomotiveRequestWrapper.java View source code
private void decodeQueryString() {
    QueryStringDecoder decoder = new QueryStringDecoder(request.getUri());
    Set<Entry<String, List<String>>> entrySet = decoder.parameters().entrySet();
    for (Entry<String, List<String>> entry : entrySet) {
        params.put(entry.getKey(), new Param(entry.getValue()));
    }
}
Example 62
Project: netty-rest-master  File: RakamHttpRequest.java View source code
public Map<String, List<String>> params() {
    if (qs == null) {
        qs = new QueryStringDecoder(request.getUri());
    }
    return qs.parameters();
}