diff options
Diffstat (limited to 'src/main/scala/com/drivergrp/core/rest.scala')
-rw-r--r-- | src/main/scala/com/drivergrp/core/rest.scala | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/main/scala/com/drivergrp/core/rest.scala b/src/main/scala/com/drivergrp/core/rest.scala index b772a2e..51823da 100644 --- a/src/main/scala/com/drivergrp/core/rest.scala +++ b/src/main/scala/com/drivergrp/core/rest.scala @@ -23,20 +23,29 @@ import scalaz.{Failure => _, Success => _, _} object rest { - class RestService(actorSystem: ActorSystem, log: Logger, stats: Stats, - time: TimeProvider, executionContext: ExecutionContext) { + trait RestService { + def sendRequest(request: HttpRequest): Future[HttpResponse] + } - protected implicit val timeout = Timeout(5 seconds) + class AkkaHttpRestService(actorSystem: ActorSystem) extends RestService { + protected implicit val materializer = ActorMaterializer()(actorSystem) + + def sendRequest(request: HttpRequest): Future[HttpResponse] = + Http()(actorSystem).singleRequest(request)(materializer) + } - implicit val materializer = ActorMaterializer()(actorSystem) + class ProxyRestService(actorSystem: ActorSystem, log: Logger, stats: Stats, + time: TimeProvider, executionContext: ExecutionContext) + extends AkkaHttpRestService(actorSystem) { + protected implicit val timeout = Timeout(5 seconds) - def sendRequest(request: HttpRequest): Future[HttpResponse] = { + override def sendRequest(request: HttpRequest): Future[HttpResponse] = { log.audit(s"Sending to ${request.uri} request $request") val requestTime = time.currentTime() - val response = Http()(actorSystem).singleRequest(request)(materializer) + val response = super.sendRequest(request) response.onComplete { case Success(_) => @@ -55,7 +64,6 @@ object rest { } } - object basicFormats { implicit def idFormat[T] = new RootJsonFormat[Id[T]] { |