aboutsummaryrefslogtreecommitdiff
path: root/kamon-newrelic/src/main/scala/kamon/newrelic/ClientPipelines.scala
blob: ca0036460a3f82a3c14f6e1bba7deca29440c089 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package kamon.newrelic

import akka.actor.ActorRef
import akka.util.Timeout
import spray.http.{ HttpResponse, HttpRequest }
import spray.httpx.RequestBuilding
import spray.httpx.encoding.Deflate
import spray.json._
import spray.client.pipelining.sendReceive

import scala.concurrent.{ ExecutionContext, Future }

trait ClientPipelines extends RequestBuilding {

  def compressedPipeline(transport: ActorRef)(implicit ec: ExecutionContext, to: Timeout): HttpRequest  Future[HttpResponse] =
    encode(Deflate) ~> sendReceive(transport)

  def compressedToJsonPipeline(transport: ActorRef)(implicit ec: ExecutionContext, to: Timeout): HttpRequest  Future[JsValue] =
    compressedPipeline(transport) ~> toJson

  def toJson(response: HttpResponse): JsValue = response.entity.asString.parseJson

}