Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package controllers
- import scala.language.higherKinds
- import eu.timepit.refined.api.{RefType, Validate}
- import play.api.mvc.PathBindable
- object RefinedPathBindable {
- implicit def refinedPathBindable[R[_, _], T, P](implicit
- baseTypeBinder: PathBindable[T],
- refType: RefType[R],
- validate: Validate[T, P]
- ): PathBindable[R[T, P]] = new PathBindable[R[T, P]] {
- override def bind(key: String, value: String): Either[String, R[T, P]] = {
- baseTypeBinder.bind(key, value).right.flatMap { baseValue =>
- refType.refine[P](baseValue)
- }
- }
- override def unbind(key: String, value: R[T, P]): String = {
- baseTypeBinder.unbind(key, refType.unwrap(value))
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement