List of usage examples for io.netty.handler.codec.http HttpRequest getUri
@Deprecated String getUri();
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; }