aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuicommon/parsers/PagiationParser.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuicommon/parsers/PagiationParser.scala')
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/parsers/PagiationParser.scala26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/pdsuicommon/parsers/PagiationParser.scala b/src/main/scala/xyz/driver/pdsuicommon/parsers/PagiationParser.scala
new file mode 100644
index 0000000..3381542
--- /dev/null
+++ b/src/main/scala/xyz/driver/pdsuicommon/parsers/PagiationParser.scala
@@ -0,0 +1,26 @@
+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) = query.collectFirst{case (`field`, size) => size} match {
+ case Some(IntString(x)) => x.toInt
+ case Some(str) => throw new ParseQueryArgException((field, s"must be an integer (found $str)"))
+ case None => throw new ParseQueryArgException((field, "must be defined"))
+ }
+
+ Try {
+ Pagination(validate("pageSize"), validate("pageNumber"))
+ }
+ }
+}