aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuicommon/parsers/PaginationParser.scala
diff options
context:
space:
mode:
authorJakob Odersky <jakob@driver.xyz>2017-08-08 00:11:13 -0700
committerJakob Odersky <jakob@driver.xyz>2017-08-16 19:26:10 -0700
commita59d6910eaccf9b5540fb41648a7d4e67cc241b5 (patch)
treec27ba7bb752835c47b0f569ea8c48c3bed21e513 /src/main/scala/xyz/driver/pdsuicommon/parsers/PaginationParser.scala
parent75fcedad9270c70c014af819b7d46dcfe00c1282 (diff)
downloadrest-query-a59d6910eaccf9b5540fb41648a7d4e67cc241b5.tar.gz
rest-query-a59d6910eaccf9b5540fb41648a7d4e67cc241b5.tar.bz2
rest-query-a59d6910eaccf9b5540fb41648a7d4e67cc241b5.zip
Fix parsers and renable fatal warnings
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuicommon/parsers/PaginationParser.scala')
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/parsers/PaginationParser.scala29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/pdsuicommon/parsers/PaginationParser.scala b/src/main/scala/xyz/driver/pdsuicommon/parsers/PaginationParser.scala
new file mode 100644
index 0000000..b59b1a5
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuicommon/parsers/PaginationParser.scala
@@ -0,0 +1,29 @@
+package xyz.driver.pdsuicommon.parsers
+
+import xyz.driver.pdsuicommon.db._
+import scala.util._
+
+object PaginationParser {
+
+ @deprecated("play-akka transition", "0")
+ def parse(query: Map[String, Seq[String]]): Try[Pagination] =
+ parse(query.toSeq.flatMap {
+ case (key, values) =>
+ values.map(value => key -> value)
+ })
+
+ def parse(query: Seq[(String, String)]): Try[Pagination] = {
+ val IntString = """(\d+)""".r
+ def validate(field: String, default: Int) = query.collectFirst { case (`field`, size) => size } match {
+ case Some(IntString(x)) if x.toInt > 0 => x.toInt
+ case Some(IntString(x)) => throw new ParseQueryArgException((field, s"must greater than zero (found $x)"))
+ case Some(str) => throw new ParseQueryArgException((field, s"must be an integer (found $str)"))
+ case None => default
+ }
+
+ Try {
+ Pagination(validate("pageSize", Pagination.Default.pageSize),
+ validate("pageNumber", Pagination.Default.pageNumber))
+ }
+ }
+}