From d2ca9af21079656113c445bd9df69d5b90a1b618 Mon Sep 17 00:00:00 2001 From: vlad Date: Tue, 29 Nov 2016 20:54:22 -0800 Subject: Correct path matchers for Id and name for akka http --- src/main/scala/xyz/driver/core/json.scala | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/scala/xyz/driver/core/json.scala b/src/main/scala/xyz/driver/core/json.scala index cc27944..91cd58b 100644 --- a/src/main/scala/xyz/driver/core/json.scala +++ b/src/main/scala/xyz/driver/core/json.scala @@ -1,8 +1,8 @@ package xyz.driver.core import akka.http.scaladsl.model.Uri.Path -import akka.http.scaladsl.server.PathMatcher.Matched -import akka.http.scaladsl.server.{PathMatcher, _} +import akka.http.scaladsl.server.PathMatcher.{Matched, Unmatched} +import akka.http.scaladsl.server._ import akka.http.scaladsl.unmarshalling.Unmarshaller import spray.json.{DeserializationException, JsNumber, _} import xyz.driver.core.revision.Revision @@ -13,7 +13,10 @@ import scala.reflect.runtime.universe._ object json { def IdInPath[T]: PathMatcher1[Id[T]] = new PathMatcher1[Id[T]] { - def apply(path: Path) = Matched(Path.Empty, Tuple1(Id[T](path.toString))) + def apply(path: Path) = path match { + case Path.Segment(segment, tail) => Matched(tail, Tuple1(Id[T](segment))) + case _ => Unmatched + } } implicit def idFormat[T] = new RootJsonFormat[Id[T]] { @@ -26,7 +29,10 @@ object json { } def NameInPath[T]: PathMatcher1[Name[T]] = new PathMatcher1[Name[T]] { - def apply(path: Path) = Matched(Path.Empty, Tuple1(Name[T](path.toString))) + def apply(path: Path) = path match { + case Path.Segment(segment, tail) => Matched(tail, Tuple1(Name[T](segment))) + case _ => Unmatched + } } implicit def nameFormat[T] = new RootJsonFormat[Name[T]] { -- cgit v1.2.3