【发布时间】:2012-10-31 00:57:59
【问题描述】:
我的这段代码带有几个讨厌的嵌套检查...
我很确定它可以重写为便于理解,但我对如何混合模式匹配的东西有点困惑
// first tries to find the token in a header: "authorization: ideas_token=xxxxx"
// then tries to find the token in the querystring: "ideas_token=xxxxx"
private def applicationTokenFromRequest(request: Request[AnyContent]): Option[String] = {
val fromHeaders: Option[String] = request.headers.get("authorization")
val tokenRegExp = """^\s*ideas_token\s*=\s*(\w+)\s*$""".r
val tokenFromHeader: Option[String] = {
if (fromHeaders.isDefined) {
val header = fromHeaders.get
if (tokenRegExp.pattern.matcher(header).matches) {
val tokenRegExp(extracted) = header
Some(extracted)
} else {
None
}
} else {
None
}
}
// try to find it in the queryString
tokenFromHeader.orElse {
request.queryString.get("ideas_token")
}
}
你能给我什么提示吗?
【问题讨论】:
-
在代码审查网站上可能更好
-
@NoelM:这个问题需要具体的建议,而不仅仅是代码审查。