protected static Map<String, Http.Cookie> getCookies(HttpServletRequest httpServletRequest) { Map<String, Http.Cookie> cookies = new HashMap<String, Http.Cookie>(16); javax.servlet.http.Cookie[] cookiesViaServlet = httpServletRequest.getCookies(); if (cookiesViaServlet != null) { for (javax.servlet.http.Cookie cookie : cookiesViaServlet) { Http.Cookie playCookie = new Http.Cookie(); playCookie.name = cookie.getName(); playCookie.path = cookie.getPath(); playCookie.domain = cookie.getDomain(); playCookie.secure = cookie.getSecure(); playCookie.value = cookie.getValue(); playCookie.maxAge = cookie.getMaxAge(); cookies.put(playCookie.name, playCookie); } } return cookies; }
public static Request parseRequest(HttpServletRequest httpServletRequest) throws Exception { Request request = new Http.Request(); Request.current.set(request); URI uri = new URI(httpServletRequest.getRequestURI()); request.method = httpServletRequest.getMethod().intern(); request.path = uri.getPath(); request.querystring = httpServletRequest.getQueryString() == null ? "" : httpServletRequest.getQueryString(); Logger.trace("httpServletRequest.getContextPath(): " + httpServletRequest.getContextPath()); Logger.trace("request.path: " + request.path + ", request.querystring: " + request.querystring); Router.routeOnlyStatic(request); if (httpServletRequest.getHeader("Content-Type") != null) { request.contentType = httpServletRequest.getHeader("Content-Type").split(";")[0].trim().toLowerCase().intern(); } else { request.contentType = "text/html".intern(); } if (httpServletRequest.getHeader("X-HTTP-Method-Override") != null) { request.method = httpServletRequest.getHeader("X-HTTP-Method-Override").intern(); } request.body = httpServletRequest.getInputStream(); request.secure = httpServletRequest.isSecure(); request.url = uri.toString() + (httpServletRequest.getQueryString() == null ? "" : "?" + httpServletRequest.getQueryString()); request.host = httpServletRequest.getHeader("host"); if (request.host.contains(":")) { request.port = Integer.parseInt(request.host.split(":")[1]); request.domain = request.host.split(":")[0]; } else { request.port = 80; request.domain = request.host; } request.remoteAddress = httpServletRequest.getRemoteAddr(); if (Play.configuration.containsKey("XForwardedSupport") && httpServletRequest.getHeader("X-Forwarded-For") != null) { if (!Arrays.asList( Play.configuration.getProperty("XForwardedSupport", "127.0.0.1").split(",")) .contains(request.remoteAddress)) { throw new RuntimeException("This proxy request is not authorized"); } else { request.secure = ("https".equals(Play.configuration.get("XForwardedProto")) || "https".equals(httpServletRequest.getHeader("X-Forwarded-Proto")) || "on".equals(httpServletRequest.getHeader("X-Forwarded-Ssl"))); if (Play.configuration.containsKey("XForwardedHost")) { request.host = (String) Play.configuration.get("XForwardedHost"); } else if (httpServletRequest.getHeader("X-Forwarded-Host") != null) { request.host = httpServletRequest.getHeader("X-Forwarded-Host"); } if (httpServletRequest.getHeader("X-Forwarded-For") != null) { request.remoteAddress = httpServletRequest.getHeader("X-Forwarded-For"); } } } Enumeration headersNames = httpServletRequest.getHeaderNames(); while (headersNames.hasMoreElements()) { Http.Header hd = new Http.Header(); hd.name = (String) headersNames.nextElement(); hd.values = new ArrayList<String>(); Enumeration enumValues = httpServletRequest.getHeaders(hd.name); while (enumValues.hasMoreElements()) { String value = (String) enumValues.nextElement(); hd.values.add(value); } request.headers.put(hd.name.toLowerCase(), hd); } request.resolveFormat(); javax.servlet.http.Cookie[] cookies = httpServletRequest.getCookies(); if (cookies != null) { for (javax.servlet.http.Cookie cookie : cookies) { Http.Cookie playCookie = new Http.Cookie(); playCookie.name = cookie.getName(); playCookie.path = cookie.getPath(); playCookie.domain = cookie.getDomain(); playCookie.secure = cookie.getSecure(); playCookie.value = cookie.getValue(); playCookie.maxAge = cookie.getMaxAge(); request.cookies.put(playCookie.name, playCookie); } } request._init(); return request; }