Example usage for io.netty.handler.codec.http HttpRequest getUri

List of usage examples for io.netty.handler.codec.http HttpRequest getUri

Introduction

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

Prototype

@Deprecated
String getUri();

Source Link

Usage

From source file:me.zhuoran.amoeba.netty.server.http.HttpRequestHandler.java

License:Apache License

@Override
public FullHttpResponse getHttpResponse(AmoebaHttpRequest request) {
    DefaultFullHttpResponse response = null;
    HttpRequest req = request.getHttpRequest();

    try {/*w  w w.  j  a v  a  2  s  . c  om*/
        String service = sanitizeUri(req.getUri());
        Executor commond = (Executor) HttpServer.ctx.getBean(service);
        Object result = commond.execute(request);
        if (result == null) {
            return new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.NO_CONTENT);
        }

        if (result instanceof String) {
            String content = (String) result;
            response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK,
                    Unpooled.wrappedBuffer(content.getBytes()));
            response.headers().set(HttpHeaders.Names.CONTENT_TYPE, "application/json; charset=UTF-8");
        } else {
            if (!(result instanceof byte[])) {
                if (result instanceof FullHttpResponse) {
                    return (FullHttpResponse) result;
                }

                return new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.NO_CONTENT);
            }

            byte[] content = (byte[]) result;
            response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK,
                    Unpooled.wrappedBuffer(content));
            response.headers().set(HttpHeaders.Names.CONTENT_TYPE, "application/octet-stream");
        }
    } catch (NoSuchBeanDefinitionException exception) {
        response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.NOT_FOUND);
    } catch (Throwable t) {
        response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.INTERNAL_SERVER_ERROR);
        t.printStackTrace();
    }

    response.headers().set(HttpHeaders.Names.CONTENT_LENGTH,
            Integer.valueOf(response.content().readableBytes()));
    return response;
}

From source file:me.zhuoran.amoeba.netty.server.HttpServerHandler.java

License:Apache License

protected void messageReceived(ChannelHandlerContext ctx, Object msg) throws Exception {
    AmoebaHttpRequest request = null;/*  w w  w  .  j a  v  a2s . c  o  m*/
    if (msg instanceof HttpRequest) {
        HttpRequest httpContent = (HttpRequest) msg;
        if (!httpContent.getDecoderResult().isSuccess()) {
            sendHttpResponse(ctx, httpContent,
                    new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.BAD_REQUEST));
            return;
        }

        if (httpContent.getMethod() != HttpMethod.GET && httpContent.getMethod() != HttpMethod.POST) {
            sendHttpResponse(ctx, httpContent,
                    new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.FORBIDDEN));
            return;
        }

        if (HttpHeaders.is100ContinueExpected(httpContent)) {
            ctx.write(new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.CONTINUE));
        }

        String uri = HttpRequestHandler.sanitizeUri(httpContent.getUri());
        if (!HttpServer.executorNameList.contains(uri)) {
            DefaultFullHttpResponse response1 = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1,
                    HttpResponseStatus.NOT_FOUND);
            sendHttpResponse(ctx, httpContent, response1);
            return;
        }

        request = new AmoebaHttpRequest(httpContent, ctx.channel().id().asLongText());
    }

    if (msg instanceof HttpContent) {
        HttpContent httpContent = (HttpContent) msg;
        ByteBuf content = httpContent.content();
        request.setHttpContent(content);
        request.setContent(content.toString(CharsetUtil.UTF_8));
        if (msg instanceof LastHttpContent) {
            FullHttpResponse response = this.getHttpResponse(request);
            this.writeResponse(request, response, ctx);
        }
    }

}

From source file:name.osipov.alexey.server.ServerHandler.java

License:Apache License

@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws IOException {
    if (msg instanceof HttpRequest) {
        HttpRequest req = (HttpRequest) msg;

        if (HttpHeaders.is100ContinueExpected(req)) {
            ctx.write(new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.CONTINUE));
            return;
        }//w  w w  .  ja  v a  2 s.  c  o  m

        //String passkey = req.headers().get("passkey");

        // in case of large output this buffer will demand memory
        // writing directly to channel maybe more efficient...
        ByteBufOutputStream bufstream = new ByteBufOutputStream(Unpooled.buffer());
        JsonGenerator json = new JsonFactory().createGenerator(bufstream);
        json.writeStartObject();

        HttpResponseStatus status = HttpResponseStatus.INTERNAL_SERVER_ERROR;

        switch (req.getUri()) {
        case "/register": {
            User u = users.Register();
            json.writeNumberField("id", u.getId());
            json.writeBinaryField("key", u.getKey().asBinary());
            status = HttpResponseStatus.OK;
        }
            break;

        case "/statistics": {
            String hashed_key_base64 = req.headers().get("key");
            byte[] hashed_key = Base64.decodeBase64(hashed_key_base64);
            long salt = System.currentTimeMillis() / 1000 / 30;
            User u = users.getBySaltedHash(hashed_key, salt);
            if (u != null) {
                u.requestHappen();
                json.writeNumberField("id", u.getId());
                json.writeNumberField("requests", u.getRequests());
                status = HttpResponseStatus.OK;
            } else
                status = HttpResponseStatus.UNAUTHORIZED;
        }
            break;
        }

        json.writeEndObject();
        json.close();

        FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, status,
                bufstream.buffer());
        response.headers().set(HttpHeaders.Names.CONTENT_TYPE, "text/plain");
        response.headers().set(HttpHeaders.Names.CONTENT_LENGTH, response.content().readableBytes());

        if (!HttpHeaders.isKeepAlive(req)) {
            ctx.write(response).addListener(ChannelFutureListener.CLOSE);
        } else {
            response.headers().set(HttpHeaders.Names.CONNECTION, Values.KEEP_ALIVE);
            ctx.write(response);
        }
    }
}

From source file:net.javaforge.netty.servlet.bridge.impl.HttpServletRequestImpl.java

License:Apache License

public HttpServletRequestImpl(HttpRequest request, FilterChainImpl chain) {
    this.originalRequest = request;

    if (request instanceof FullHttpRequest) {
        this.inputStream = new ServletInputStreamImpl((FullHttpRequest) request);
    } else {//from   w  w  w  . j  av a 2 s.  c  o  m
        this.inputStream = new ServletInputStreamImpl(request);
    }
    this.reader = new BufferedReader(new InputStreamReader(inputStream));
    this.queryStringDecoder = new QueryStringDecoder(request.getUri());
    this.uriParser = new URIParser(chain);
    this.uriParser.parse(request.getUri());
    this.characterEncoding = Utils.getCharsetFromContentType(getContentType());

}

From source file:net.javaforge.netty.servlet.bridge.ServletBridgeHandler.java

License:Apache License

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

    if (e instanceof HttpRequest) {
        HttpRequest request = (HttpRequest) e;

        String uri = request.uri();

        if (uri.startsWith(uriPrefix)) {
            if (HttpHeaders.is100ContinueExpected(request)) {
                ctx.channel().write(new DefaultHttpResponse(HTTP_1_1, CONTINUE));
            }// ww  w  .ja v  a2  s.  c om

            FilterChainImpl chain = ServletBridgeWebapp.get().initializeChain(uri);

            if (chain.isValid()) {
                handleHttpServletRequest(ctx, request, chain);
            } else if (ServletBridgeWebapp.get().getStaticResourcesFolder() != null) {
                handleStaticResourceRequest(ctx, request);
            } else {
                throw new ServletBridgeRuntimeException("No handler found for uri: " + request.getUri());
            }
        } else {
            ctx.fireChannelRead(e);
        }
    } else {
        ctx.fireChannelRead(e);
    }
}

From source file:net.mms_projects.copy_it.api.http.pages.oauth.AccessToken.java

License:Open Source License

public FullHttpResponse onGetRequest(HttpRequest request, Database database) throws Exception {
    URI uri = new URI(request.getUri());
    HeaderVerifier headerVerifier = new HeaderVerifier(request, uri, HeaderVerifier.Flags.REQUIRES_VERIFIER);
    headerVerifier.verifyConsumer(database);
    final String verifier = headerVerifier.getVerifier();
    final String token = headerVerifier.getPublicToken();
    PreparedStatement statement = database.getConnection().prepareStatement(SELECT_USER_ID);
    statement.setString(1, token);/*from  w  ww  . j  a  va  2s.  c o  m*/
    statement.setString(2, verifier);
    statement.setInt(3, headerVerifier.getConsumerId());
    ResultSet result = statement.executeQuery();
    if (result.first()) {
        int user_id = result.getInt(USER_ID);
        headerVerifier.setFakeUser(new HeaderVerifier.FakeUser(result));
        headerVerifier.checkSignature(null, false);
        result.close();
        PreparedStatement create_token = database.getConnection().prepareStatement(CREATE_TOKEN);
        create_token.setInt(1, user_id);
        create_token.setInt(2, headerVerifier.getConsumerId());
        create_token.setInt(3, headerVerifier.getConsumerScope().toInt());
        create_token.executeUpdate();
        PreparedStatement select_token = database.getConnection().prepareStatement(SELECT_ACCESS_TOKEN);
        select_token.setInt(1, user_id);
        select_token.setInt(2, headerVerifier.getConsumerId());
        ResultSet tokens = select_token.executeQuery();
        if (tokens.first()) {
            final StringBuilder output = new StringBuilder();
            output.append(OUTPUT_TOKEN);
            output.append(tokens.getString(PUBLIC_KEY));
            output.append(OUTPUT_TOKEN_SECRET);
            output.append(tokens.getString(SECRET_KEY));
            tokens.close();
            PreparedStatement cleanup = database.getConnection().prepareStatement(CLEANUP);
            cleanup.setString(1, token);
            cleanup.executeUpdate();
            return new DefaultFullHttpResponse(request.getProtocolVersion(), OK,
                    Unpooled.copiedBuffer(output.toString(), CharsetUtil.UTF_8));
        }
    }
    result.close();
    return null;
}

From source file:net.mms_projects.copy_it.api.http.pages.oauth.Authorize.java

License:Open Source License

public FullHttpResponse onGetRequest(HttpRequest request, Database database) throws Exception {
    final QueryStringDecoder querydecoder = new QueryStringDecoder(new URI(request.getUri()));
    Map<String, List<String>> parameters = querydecoder.parameters();
    if (!parameters.containsKey(OAUTH_TOKEN))
        throw new ErrorException(MISSING_OAUTH_TOKEN);
    PreparedStatement get_app = database.getConnection().prepareStatement(SELECT_APPLICATION);
    get_app.setString(1, parameters.get(OAUTH_TOKEN).get(0));
    ResultSet result = get_app.executeQuery();
    if (result.first()) {
        Map<String, String> vars = new HashMap<String, String>();
        vars.put(APPLICATION, result.getString(APPLICATION));
        result.close();//from www . j a  v a2 s  .c o m
        return new DefaultFullHttpResponse(request.getProtocolVersion(), OK,
                Unpooled.copiedBuffer(
                        TEMPLATE_MATCHER.replace(
                                LanguageHeader.fromRequest(request).getPageInLocale(AUTHORIZE_DOT_HTML), vars),
                        CharsetUtil.UTF_8));
    }
    result.close();
    throw new ErrorException(INVALID_TOKEN);
}

From source file:net.mms_projects.copy_it.api.http.pages.oauth.Authorize.java

License:Open Source License

public FullHttpResponse onPostRequest(HttpRequest request, HttpPostRequestDecoder postRequestDecoder,
        Database database) throws Exception {
    final QueryStringDecoder querydecoder = new QueryStringDecoder(new URI(request.getUri()));
    Map<String, List<String>> parameters = querydecoder.parameters();
    if (!parameters.containsKey(OAUTH_TOKEN))
        throw new ErrorException(MISSING_OAUTH_TOKEN);
    final String oauth_token = parameters.get(OAUTH_TOKEN).get(0);
    final InterfaceHttpData session_raw = postRequestDecoder.getBodyHttpData(SESSION);
    if (session_raw == null || !(session_raw instanceof HttpData))
        throw new ErrorException(MISSING_SESSION);
    final String session = ((HttpData) session_raw).getString();
    try {//from   ww w . j  a va  2  s .c o  m
        PreparedStatement get_email = database.getConnection().prepareStatement(GET_EMAIL_FROM_SESSION);
        get_email.setString(1, session);
        ResultSet email = get_email.executeQuery();
        if (email.first()) {
            final String email_address = email.getString(EMAIL);
            email.close();
            PreparedStatement cleanup_session = database.getConnection().prepareStatement(DELETE_SESSION);
            cleanup_session.setString(1, session);
            cleanup_session.executeUpdate();
            PreparedStatement create_user = database.getConnection().prepareStatement(CREATE_USER);
            create_user.setString(1, email_address);
            create_user.executeUpdate();
            PreparedStatement update = database.getConnection().prepareStatement(UPDATE_USER_ID);
            update.setString(1, email_address);
            update.setString(2, oauth_token);
            if (update.executeUpdate() == 1) {
                database.getConnection().commit();
                PreparedStatement statement = database.getConnection().prepareStatement(SELECT_CALLBACK);
                statement.setString(1, oauth_token);
                ResultSet result = statement.executeQuery();
                if (result.first()) {
                    final String callback = result.getString(CALLBACK_URI);
                    final String verifier = result.getString(VERIFIER);
                    result.close();
                    final StringBuilder output = new StringBuilder();
                    output.append(callback);
                    output.append(CALLBACK_URI_PARAMETER);
                    output.append(verifier);
                    DefaultFullHttpResponse response = new DefaultFullHttpResponse(request.getProtocolVersion(),
                            MOVED_PERMANENTLY);
                    HttpHeaders.addHeader(response, HttpHeaders.Names.LOCATION, output.toString());
                    return response;
                } else {
                    result.close();
                    throw new ErrorException(INVALID_TOKEN);
                }
            }
        }
        email.close();
        throw new ErrorException(WE_MADE_A_BOO_BOO);
    } catch (NumberFormatException e) {
        throw new ErrorException(USER_ID_NOT_A_NUMBER);
    }
}

From source file:net.mms_projects.copy_it.api.http.pages.oauth.RequestToken.java

License:Open Source License

public FullHttpResponse onPostRequest(HttpRequest request, HttpPostRequestDecoder postRequestDecoder,
        Database database) throws Exception {
    URI uri = new URI(request.getUri());
    HeaderVerifier headerVerifier = new HeaderVerifier(request, uri, HeaderVerifier.Flags.MAY_MISS_TOKEN);
    String callback = headerVerifier.getCallbackUri();
    if (callback == null)
        throw new ErrorException(MISSING_OAUTH_CALLBACK);
    try {//from   w  w w.  j ava  2 s  .  c om
        new URI(callback);
    } catch (URISyntaxException e) {
        throw new ErrorException(INVALID_CALLBACK_URI);
    }
    if (callback.length() > 1024)
        throw new ErrorException(URI_TOO_LONG);
    headerVerifier.verifyConsumer(database);
    PreparedStatement statement = database.getConnection().prepareStatement(CREATE_TOKENS);
    statement.setInt(1, headerVerifier.getConsumerId());
    statement.setString(2, callback);
    if (statement.executeUpdate() == 1) {
        statement = database.getConnection().prepareStatement(GET_LATEST_TOKEN);
        ResultSet result = statement.executeQuery();
        if (result.first()) {
            StringBuilder builder = new StringBuilder(190);
            builder.append(OAUTH_TOKEN);
            builder.append(result.getString(PUBLIC_KEY));
            builder.append(OAUTH_TOKEN_SECRET);
            builder.append(result.getString(SECRET_KEY));
            builder.append(OAUTH_CALLBACK_CONFIRMED);
            result.close();
            return new DefaultFullHttpResponse(request.getProtocolVersion(), OK,
                    Unpooled.copiedBuffer(builder.toString(), CharsetUtil.UTF_8));
        }
        result.close();
    }
    return null;
}

From source file:net.mms_projects.copy_it.api.oauth.HeaderVerifier.java

License:Open Source License

/**
 * Constructor for check OAuth headers, most of the things that can be checked will be checked right away.
 * @param request The netty HttpRequest to get the headers from
 * @param uri The URI for this request "new URI(request.getUri())"
 * @param flags These flags are only related to the signin, otherwise you may omit them
 * @throws OAuthException Thrown if one of the checks failed
 *//*from   w  w w .j a  v a2  s  .  com*/
public HeaderVerifier(final HttpRequest request, final URI uri, final int flags) throws OAuthException {
    if (!request.headers().contains(AUTHORIZATION))
        throw new OAuthException(ErrorMessages.NO_AUTH_HEADER);
    auth_header = request.headers().get(AUTHORIZATION);
    if (!auth_header.startsWith(OAUTH))
        throw new OAuthException(ErrorMessages.NO_REALM_PRESENT);
    String[] split = auth_header.substring(6).split(COMMA_REGEX);
    oauth_params = new LinkedHashMap<String, String>();
    for (int i = 0; i < split.length; i++) {
        String[] split_header = split[i].split(EQUALS_REGEX, 2);
        if (split_header.length == 2) {
            if (split_header[0].equals(REALM))
                continue;
            else if (!split[i].startsWith(OAUTH_))
                throw new OAuthException(ErrorMessages.INVALID_FIELD_IN_AUTHHEADER);
            oauth_params.put(split_header[0], split_header[1].replaceAll(STRIP_QUOTES_REGEX, EMPTY));
        }
    }
    if (!oauth_params.containsKey(OAuthParameters.OAUTH_CONSUMER_KEY))
        error(ErrorMessages.MISSING_CONSUMER_KEY);
    if (!oauth_params.containsKey(OAuthParameters.OAUTH_NONCE))
        error(ErrorMessages.MISSING_NONCE);
    else if (oauth_params.get(OAuthParameters.OAUTH_NONCE).length() > 8)
        error(ErrorMessages.NONCE_TOO_LONG);
    if (!oauth_params.containsKey(OAuthParameters.OAUTH_TIMESTAMP))
        error(ErrorMessages.MISSING_TIMESTAMP);
    else {
        try {
            final long timestamp = Integer.valueOf(oauth_params.get(OAuthParameters.OAUTH_TIMESTAMP))
                    .longValue();
            final long now = (System.currentTimeMillis() / 1000);
            if (timestamp < (now - 300) || (now + 300) < timestamp)
                error(ErrorMessages.TIMESTAMP_OUT_OF_BOUNDS);
        } catch (NumberFormatException e) {
            error(ErrorMessages.INVALID_TIMESTAMP);
        }
    }
    if (!oauth_params.containsKey(OAuthParameters.OAUTH_SIGNATURE_METHOD))
        error(ErrorMessages.MISSING_SIGNATURE_METHOD);
    else if (!oauth_params.get(OAuthParameters.OAUTH_SIGNATURE_METHOD).equals(VALID_SIGNATURE_METHOD))
        error(ErrorMessages.INVALID_SIGNATURE_METHOD);
    if (!oauth_params.containsKey(OAuthParameters.OAUTH_VERSION))
        error(ErrorMessages.MISSING_VERSION);
    else if (!oauth_params.get(OAuthParameters.OAUTH_VERSION).equals(VALID_OAUTH_VERSION))
        error(ErrorMessages.INVALID_VERSION);
    if (((flags & Flags.MAY_MISS_TOKEN) != Flags.MAY_MISS_TOKEN)
            && !oauth_params.containsKey(OAuthParameters.OAUTH_TOKEN))
        error(ErrorMessages.MISSING_TOKEN);
    if (((flags & Flags.REQUIRES_VERIFIER) == Flags.REQUIRES_VERIFIER)
            && !oauth_params.containsKey(OAuthParameters.OAUTH_VERIFIER))
        error(ErrorMessages.MISSING_VERIFIER);
    if (!oauth_params.containsKey(OAuthParameters.OAUTH_SIGNATURE))
        error(ErrorMessages.MISSING_SIGNATURE);
    final QueryStringDecoder querydecoder = new QueryStringDecoder(request.getUri());
    final Map<String, List<String>> parameters = querydecoder.parameters();
    final Set<String> keyset = parameters.keySet();
    final Iterator<String> iter = keyset.iterator();
    while (iter.hasNext()) {
        if (iter.next().startsWith(OAUTH_))
            error(ErrorMessages.INVALID_PARAMETER);
    }
    if (exception != null)
        throw exception;
    this.request = request;
    this.uri = uri;
    this.flags = flags;
}