diff options
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuicommon/parsers/PagiationParser.scala')
-rw-r--r-- | src/main/scala/xyz/driver/pdsuicommon/parsers/PagiationParser.scala | 26 |
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")) + } + } +} |