Added getNonNullHeader() extension function.

This commit is contained in:
Erik C. Thauvin 2019-09-21 22:25:42 -07:00
parent 8f67066f92
commit 0cdddcfd2c

View file

@ -158,13 +158,18 @@ open class AkismetComment(val userIp: String, val userAgent: String) {
/** /**
* Create an Akismet comment extracting the [userIp], [userAgent], [referrer] and [serverEnv] environment variables * Create an Akismet comment extracting the [userIp], [userAgent], [referrer] and [serverEnv] environment variables
* from a Servlet request. See the * from a Servlet request.
*
* See the
* [Akismet API](https://akismet.com/development/api/#comment-check) for more details. * [Akismet API](https://akismet.com/development/api/#comment-check) for more details.
* *
* @see [serverEnv] * @see [serverEnv]
*/ */
constructor(request: HttpServletRequest) : this(request.remoteAddr, request.getHeader("User-Agent")) { constructor(request: HttpServletRequest) : this(request.remoteAddr, request.getNonNullHeader("User-Agent")) {
serverEnv = buildPhpVars(request) referrer = request.getNonNullHeader("referer")
serverEnv = buildServerEnv(request)
}
/** /**
* Returns a string representation of the comment. * Returns a string representation of the comment.
*/ */
@ -190,18 +195,29 @@ open class AkismetComment(val userIp: String, val userAgent: String) {
} }
} }
private fun buildPhpVars(request: HttpServletRequest): HashMap<String, String> { private fun buildServerEnv(request: HttpServletRequest): HashMap<String, String> {
val params = HashMap<String, String>() val params = HashMap<String, String>()
if (request.remoteAddr != null)
params["REMOTE_ADDR"] = request.remoteAddr params["REMOTE_ADDR"] = request.remoteAddr
if (request.requestURI != null)
params["REQUEST_URI"] = request.requestURI params["REQUEST_URI"] = request.requestURI
val names = request.headerNames val names = request.headerNames
while (names.hasMoreElements()) { while (names.hasMoreElements()) {
val name = names.nextElement() val name = names.nextElement()
if (!name.equals("cookie", true)) { if (!name.equals("cookie", true)) {
params["HTTP_${name.toUpperCase().replace('-', '_')}"] = request.getHeader(name) params["HTTP_${name.toUpperCase().replace('-', '_')}"] = request.getNonNullHeader(name)
} }
} }
return params return params
} }
private fun HttpServletRequest.getNonNullHeader(name: String): String {
val header = getHeader(name)
if (header != null) {
return header
}
return ""
}