global.put("_query", request.getQueryParams()); global.put("_form", request.getFormParam()); global.put("_files", request.getFormFiles()); global.put("_subject", request.getSubject()); global.put("_session", request.getSubject().getSession()); global.put("_cookies", request.getCookies()); global.put("_request", request); global.put("_response", response);
public void transcribe(HttpRequest request) { //apply any transcription for (Transcription transcription : transcriptions) { if (transcription.matches(request.getUri())) { if (transcription.isReplaceWholeRequest()) { request.setUri(transcription.getReplacementPath()); } else { String newPath; if (transcription.isReplaceFirstOccurrence()) { newPath = transcription.replaceFirstMatch(request.getUri()); } else { newPath = transcription.replaceAllMatches(request.getUri()); } request.setUri(newPath); } break; } } }
/** * Initializes a response with 200 status and sets the connection header to whatever the client * requested. If no connection header is found in the client request then it is set to CLOSE * * @param message */ public HttpResponse(final HttpRequest message) { this(message == null ? HttpVersion.HTTP_1_1 : message.getProtocolVersion(), HttpStatus.OK); if (message != null) { String conn = message.headers().get(HttpHeaders.Names.CONNECTION); if (conn == null) { conn = HttpHeaders.Values.CLOSE; } headers().set(HttpHeaders.Names.CONNECTION, conn); } }
Subject subject = request.getSubject(); if (subject != null) { provider.add(subject, subject.getSession()); request.getFormFiles(), request.getFormParam(), request.getCookies(), protocolConfig.getSecurityManager(), request.getQueryParams(), pusher, request.getPath()); Object response = method.invoke(ctx, request.getUri(), method, params, provider); pusher.push(response); } catch (WebApplicationException wae) {
boolean close = HttpHeaders.Values.CLOSE.equalsIgnoreCase(request.headers().get(CONNECTION)) || request.getProtocolVersion().equals(HttpVersion.HTTP_1_0) && !HttpHeaders.Values.KEEP_ALIVE.equalsIgnoreCase(request.headers().get(CONNECTION)); if (!close && res.getManagedWriter() == null) { setContentLength(res, res.content().readableBytes()); HttpHeaders.getDate(request, request.getCreatedAt().toDate()), request.getMethod().name(), request.getUri(), request.getProtocolVersion(), res.getStatus().code(), responseSize
String realName = name.substring(0, idx); String fieldName = name.substring(idx + 1).replace(']', ' ').trim(); if (request.getFormParam().get(realName) == null) { request.getFormParam().put(realName, new HashMap<String, String>()); ((HashMap<String, String>) request.getFormParam().get(realName)).put(fieldName, field.getValue()); } else { request.addFormField(name, field.getValue()); if (data instanceof FileUpload) { request.addFormFile(new HttpFile((FileUpload) data)); } else { log.warn(String.format("Unknown form type encountered Class: %s,data type:%s,name:%s",
request.setPath(resourcePath); if (!matchesVerb(request.getMethod().name())) { return false; //if verb doesn't match nothing else matters String strType = request.headers() == null ? null : request.headers().get(CONTENT_TYPE); if (strType != null && !strType.isEmpty()) { LinkedList<MediaType> contentType = MediaType.valueOf(strType); for (MediaType acceptedMediaType : request.getAcceptedMediaTypes()) { if (producesMediaType.isCompatible(acceptedMediaType)) { request.setMatchedMediaType(producesMediaType); return true;
request = (HttpRequest) msg; } else { request = new HttpRequest((FullHttpRequest) msg, protocolConfig); request.init(ctx); method = findMethod(request.getUri(), ctx, request, methodClass); if (method == null) { if (decoder == null) { for (MediaTypeDecoder d : mediaTypeDecoders) { if (d.canDecode(request.getContentType())) { decoder = d; break; request.setChunked(HttpHeaders.isTransferEncodingChunked(request)); if (msg instanceof HttpContent) {
/** * Because some custom fields depend on headers not set on construction this method * must be invoked after Netty populates the headers. * * @param ctx */ public void init(ChannelHandlerContext ctx) { String contentTypeStr = headers().get(HttpHeaders.Names.CONTENT_TYPE); this.contentType = MediaType.valueOf(contentTypeStr); String accept = headers().get(HttpHeaders.Names.ACCEPT); acceptedMediaTypes = MediaType.valueOf(accept); String cookiesStr = headers().get(HttpHeaders.Names.COOKIE); if (cookiesStr != null) { Set<Cookie> cookie = CookieDecoder.decode(cookiesStr); for (Cookie c : cookie) { cookies.put(c.getName(), new HttpCookie(c)); } } QueryStringDecoder decoderQuery = new QueryStringDecoder(getUri()); queryParams.putAll(decoderQuery.parameters()); if (config.isEnableSessions()) { initSession(ctx); } }
protected Object extractFormParam(MethodParam param, HttpRequest request) { Object obj = request.getFormParam().get(param.getName()); if (obj != null && param.getParameterType().isAssignableFrom(obj.getClass())) { return obj; } else { if (ReflectionUtil.isNumeric(param.getParameterType())) { //if param is a number then try to handle with NumberType.parseType return extractNumberParam(param, (String) request.getFormParam().get(param.getName())); } else { return null; } } }
protected Object extractQueryParam(MethodParam param, HttpRequest request) { //query string param can be a list or string, if neither set to null if (List.class.isAssignableFrom(param.getParameterType())) { return request.getQueryParams().get(param.getName()); } else if (String.class.isAssignableFrom(param.getParameterType())) { return request.getQueryParams().getFirst(param.getName()); } else { if (ReflectionUtil.isNumeric(param.getParameterType())) { //if param is a number then try to handle with NumberType.parseType return extractNumberParam(param, request.getQueryParams().getFirst(param.getName())); } else { return null; } } }
private Object processAnnotations(HttpMethod method, HttpRequest request, MethodParam param, MethodParam[] params, ResourcePath path, ResourcePath.Component[] components, ChannelHandlerContext ctx) { if (param.isCookieParam()) { return extractCookieParam(param, request); } else if (param.isHeaderParam()) { return extractHeaderParam(param, request); } else if (param.isFormParam()) { return extractFormParam(param, request); } else if (param.isQueryParam()) { return extractQueryParam(param, request); } else if (param.isPathParam()) { return extractPathParam(param, path); } else if (param.isSessionParam()) { return request.getSubject() == null ? null : request.getSubject().getSession().getAttribute(param.getName()); } return null; }
public HttpRequest(FullHttpRequest msg, HttpProtocolConfiguration config) { this(msg.getProtocolVersion(), msg.getMethod(), msg.getUri(), config); headers().add(msg.headers()); content = Unpooled.copiedBuffer(msg.content()); setDecoderResult(msg.getDecoderResult()); }
@Override public boolean canTransform(Object response, HttpRequest request, MediaType mediaType, HttpMethod method, ChannelHandlerContext ctx) { return method != null && pathIsJson(request.getUri()) || super.canTransform(response, request, mediaType, method, ctx); }
protected Object extractHeaderParam(MethodParam param, HttpRequest request) { //header param can be a list or string, if neither set to null if (List.class.isAssignableFrom(param.getParameterType())) { return request.headers().getAll(param.getName()); } else { if (String.class.isAssignableFrom(param.getParameterType())) { return request.headers().get(param.getName()); } else { if (ReflectionUtil.isNumeric(param.getParameterType())) { //if param is a number then try to handle with NumberType.parseType return extractNumberParam(param, request.headers().get(param.getName())); } else { return null; } } } }
@Override public boolean canTransform(Object response, HttpRequest request, MediaType mediaType, HttpMethod method, ChannelHandlerContext ctx) { return method != null && pathIsJson(request.getUri()) || super.canTransform(response, request, mediaType, method, ctx); }
try { webContext.setLocale(Locale.forLanguageTag( request.headers().get(HttpHeaders.Names.ACCEPT_LANGUAGE))); } catch (Throwable t) { log.warn("Unable to set locale from accept header");
return request; } else if (FormFiles.class.isAssignableFrom(param.getParameterType())) { return request.getFormFiles(); } else if (HttpResponse.class.isAssignableFrom(param.getParameterType())) { return res; } else if (FormParams.class.isAssignableFrom(param.getParameterType())) { return request.getFormParam(); } else if (HttpCookies.class.isAssignableFrom(param.getParameterType())) { return request.getCookies(); } else if (QueryParams.class.isAssignableFrom(param.getParameterType())) { return request.getQueryParams(); } else if (Session.class.isAssignableFrom(param.getParameterType())) { return request.getSubject() == null ? null : request.getSubject().getSession(); } else if (Subject.class.isAssignableFrom(param.getParameterType())) { return request.getSubject(); } else if (ResourcePath.class.isAssignableFrom(param.getParameterType())) { return path;
private String normalizeURI(HttpRequest request) { String uri = request.getUri(); //remove query string from path if (uri.contains("?")) { uri = uri.substring(0, uri.indexOf("?")); } if (uri.equals("/") && ((HttpConfig) config.getServer().getConfig()).serve_index_file) { uri = ((HttpConfig) config.getServer().getConfig()).index_file; } //remove forward slash from URIs so that they're resolved relatively if (uri.startsWith("/")) { uri = uri.substring(1); } return uri; }
private void populateContext(final WebContext ctx, Object response, HttpRequest request, HttpMethod method) { ctx.setVariable("_query", request.getQueryParams()); ctx.setVariable("_form", request.getFormParam()); ctx.setVariable("_files", request.getFormFiles()); ctx.setVariable("_subject", request.getSubject()); ctx.setVariable("_session", request.getSubject().getSession()); ctx.setVariable("_cookies", request.getCookies()); ctx.setVariable("_request", request); ctx.setVariable("_response", response);