diff options
author | Jakob Odersky <jakob@driver.xyz> | 2017-08-08 00:11:13 -0700 |
---|---|---|
committer | Jakob Odersky <jakob@driver.xyz> | 2017-08-16 19:26:10 -0700 |
commit | a59d6910eaccf9b5540fb41648a7d4e67cc241b5 (patch) | |
tree | c27ba7bb752835c47b0f569ea8c48c3bed21e513 /src/main/scala/xyz/driver/pdsuicommon/parsers/PaginationParser.scala | |
parent | 75fcedad9270c70c014af819b7d46dcfe00c1282 (diff) | |
download | rest-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.scala | 29 |
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)) + } + } +} |