aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuicommon/parsers/PaginationParser.scala
diff options
context:
space:
mode:
authorJakob Odersky <jakob@driver.xyz>2017-08-03 14:22:46 -0700
committerJakob Odersky <jakob@driver.xyz>2017-08-16 19:26:10 -0700
commiteb5e95e95714ce23705a0de0f4dd525a8efeafe2 (patch)
treededdb5928cedbf3383bedb5115992e8b81e51847 /src/main/scala/xyz/driver/pdsuicommon/parsers/PaginationParser.scala
parent985ee69beed836b97f3476306736d3f15ce37e1c (diff)
downloadrest-query-eb5e95e95714ce23705a0de0f4dd525a8efeafe2.tar.gz
rest-query-eb5e95e95714ce23705a0de0f4dd525a8efeafe2.tar.bz2
rest-query-eb5e95e95714ce23705a0de0f4dd525a8efeafe2.zip
Remove play requirements from parsers
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuicommon/parsers/PaginationParser.scala')
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/parsers/PaginationParser.scala60
1 files changed, 0 insertions, 60 deletions
diff --git a/src/main/scala/xyz/driver/pdsuicommon/parsers/PaginationParser.scala b/src/main/scala/xyz/driver/pdsuicommon/parsers/PaginationParser.scala
deleted file mode 100644
index a6a7fae..0000000
--- a/src/main/scala/xyz/driver/pdsuicommon/parsers/PaginationParser.scala
+++ /dev/null
@@ -1,60 +0,0 @@
-package xyz.driver.server.parsers
-
-import xyz.driver.pdsuicommon.db.Pagination
-import xyz.driver.server.parsers.errors.ParseQueryArgException
-import play.api.data.validation._
-import play.api.routing.sird.QueryString
-import xyz.driver.pdsuicommon.validation.AdditionalConstraints
-
-import scala.util.Try
-
-object PaginationParser {
-
- private val oneQueryArgConstraint: Constraint[Seq[String]] = {
- Constraint("query.oneArg") {
- case Nil => Valid
- case x +: Nil => Valid
- case xs =>
- Invalid(new ValidationError(Seq(s"must be one argument, but there are multiple: '${xs.mkString(", ")}'")))
- }
- }
-
- private val pageSizeCheckConstraint: Constraint[Seq[String]] = {
- Constraint("pagination.pageSize") { args =>
- oneQueryArgConstraint(args) match {
- case x: Invalid => x
- case Valid => AdditionalConstraints.positivePrintedNumber(args.head)
- }
- }
- }
-
- private val pageNumberCheckConstraint: Constraint[Seq[String]] = {
- Constraint("pagination.pageNumber") { args =>
- oneQueryArgConstraint(args) match {
- case x: Invalid => x
- case Valid => AdditionalConstraints.positivePrintedNumber(args.head)
- }
- }
- }
-
- def parse(queryString: QueryString): Try[Pagination] = Try {
- val rawPageSizes = queryString.getOrElse("pageSize", Seq(Pagination.Default.pageSize.toString))
- val rawPageNumbers = queryString.getOrElse("pageNumber", Seq(Pagination.Default.pageNumber.toString))
-
- val validation = Seq(
- "pageSize" -> pageSizeCheckConstraint(rawPageSizes),
- "pageNumber" -> pageNumberCheckConstraint(rawPageNumbers)
- )
-
- val validationErrors = validation.collect {
- case (fieldName, e: Invalid) => (fieldName, e.errors.mkString("; "))
- }
-
- if (validationErrors.isEmpty) {
- Pagination(Integer.parseInt(rawPageSizes.head), Integer.parseInt(rawPageNumbers.head))
- } else {
- throw new ParseQueryArgException(validationErrors: _*)
- }
- }
-
-}