@Override public String getAcceptLanguage() { return getHeader("accept-language"); }
@Override public String getAcceptEncoding() { return getHeader("accept-encoding"); }
@Override public String getAcceptCharset() { return getHeader("accept-charset"); }
@Override public String getAcceptContentType() { String contentType = getHeader("accept"); if (contentType == null) { return Result.TEXT_HTML; } if (contentType.contains("application/xhtml") || contentType.contains("text/html") || contentType.startsWith("*/*")) { return Result.TEXT_HTML; } if (contentType.contains("application/xml") || contentType.contains("text/xml")) { return Result.APPLICATION_XML; } if (contentType.contains("application/json") || contentType.contains("text/javascript")) { return Result.APPLICATION_JSON; } if (contentType.contains("text/plain")) { return Result.TEXT_PLAIN; } if (contentType.contains("application/octet-stream")) { return Result.APPLICATION_OCTET_STREAM; } if (contentType.endsWith("*/*")) { return Result.TEXT_HTML; } return Result.TEXT_HTML; }
@Override public String getRemoteAddr() { boolean isUsageOfXForwardedHeaderEnabled = ninjaProperties.getBooleanWithDefault( Context.NINJA_PROPERTIES_X_FORWARDED_FOR, false); if (isUsageOfXForwardedHeaderEnabled) { String forwardHeader = getHeader(X_FORWARD_HEADER); if (forwardHeader != null) { if (forwardHeader.contains(",")) { // sometimes the header is of form client ip,proxy 1 ip,proxy 2 ip,...,proxy n ip, // we just want the client forwardHeader = StringUtils.split(forwardHeader, ',')[0].trim(); } try { // If ip4/6 address string handed over, simply does pattern validation. InetAddress.getByName(forwardHeader); return forwardHeader; } catch (UnknownHostException e) { // give up } } } // fallback to the real remote address return getRealRemoteAddr(); }