aboutsummaryrefslogtreecommitdiff
path: root/akka-http-backend/src/main/scala
diff options
context:
space:
mode:
authoradamw <adam@warski.org>2017-10-06 14:19:44 +0200
committeradamw <adam@warski.org>2017-10-06 14:19:44 +0200
commitbb7abc189d9a5f079caa47a4508b5ae585dc8bcf (patch)
tree4d096e1b0c78156df923a7cf3282a86507b8ef8b /akka-http-backend/src/main/scala
parent43baccc0edf12e8951c903d6697d7ee24a201e63 (diff)
downloadsttp-bb7abc189d9a5f079caa47a4508b5ae585dc8bcf.tar.gz
sttp-bb7abc189d9a5f079caa47a4508b5ae585dc8bcf.tar.bz2
sttp-bb7abc189d9a5f079caa47a4508b5ae585dc8bcf.zip
#10: add proxy support
Diffstat (limited to 'akka-http-backend/src/main/scala')
-rw-r--r--akka-http-backend/src/main/scala/com/softwaremill/sttp/akkahttp/AkkaHttpBackend.scala33
1 files changed, 20 insertions, 13 deletions
diff --git a/akka-http-backend/src/main/scala/com/softwaremill/sttp/akkahttp/AkkaHttpBackend.scala b/akka-http-backend/src/main/scala/com/softwaremill/sttp/akkahttp/AkkaHttpBackend.scala
index 897692c..373c970 100644
--- a/akka-http-backend/src/main/scala/com/softwaremill/sttp/akkahttp/AkkaHttpBackend.scala
+++ b/akka-http-backend/src/main/scala/com/softwaremill/sttp/akkahttp/AkkaHttpBackend.scala
@@ -1,10 +1,11 @@
package com.softwaremill.sttp.akkahttp
import java.io.{File, IOException, UnsupportedEncodingException}
+import java.net.InetSocketAddress
import akka.actor.ActorSystem
import akka.event.LoggingAdapter
-import akka.http.scaladsl.{Http, HttpsConnectionContext}
+import akka.http.scaladsl.{ClientTransport, Http, HttpsConnectionContext}
import akka.http.scaladsl.coding.{Deflate, Gzip, NoCoding}
import akka.http.scaladsl.model.ContentTypes.`application/octet-stream`
import akka.http.scaladsl.model.HttpHeader.ParsingResult
@@ -30,7 +31,7 @@ class AkkaHttpBackend private (
actorSystem: ActorSystem,
ec: ExecutionContext,
terminateActorSystemOnClose: Boolean,
- connectionTimeout: FiniteDuration,
+ opts: SttpBackendOptions,
customHttpsContext: Option[HttpsConnectionContext],
customConnectionPoolSettings: Option[ConnectionPoolSettings],
customLog: Option[LoggingAdapter])
@@ -45,10 +46,17 @@ class AkkaHttpBackend private (
private val http = Http()
private val connectionSettings = ClientConnectionSettings(actorSystem)
- .withConnectingTimeout(connectionTimeout)
-
- private val connectionPoolSettings =
- customConnectionPoolSettings.getOrElse(ConnectionPoolSettings(actorSystem))
+ .withConnectingTimeout(opts.connectionTimeout)
+
+ private val connectionPoolSettings = {
+ val base = customConnectionPoolSettings.getOrElse(
+ ConnectionPoolSettings(actorSystem))
+ opts.proxy match {
+ case None => base
+ case Some(p) =>
+ base.withTransport(ClientTransport.httpsProxy(p.inetSocketAddress))
+ }
+ }
override def send[T](r: Request[T, S]): Future[Response[T]] = {
implicit val ec: ExecutionContext = this.ec
@@ -300,7 +308,7 @@ object AkkaHttpBackend {
actorSystem: ActorSystem,
ec: ExecutionContext,
terminateActorSystemOnClose: Boolean,
- connectionTimeout: FiniteDuration,
+ options: SttpBackendOptions,
customHttpsContext: Option[HttpsConnectionContext],
customConnectionPoolSettings: Option[ConnectionPoolSettings],
customLog: Option[LoggingAdapter])
@@ -309,7 +317,7 @@ object AkkaHttpBackend {
new AkkaHttpBackend(actorSystem,
ec,
terminateActorSystemOnClose,
- connectionTimeout,
+ options,
customHttpsContext,
customConnectionPoolSettings,
customLog))
@@ -319,8 +327,7 @@ object AkkaHttpBackend {
* e.g. mapping responses. Defaults to the global execution
* context.
*/
- def apply(connectionTimeout: FiniteDuration =
- SttpBackend.DefaultConnectionTimeout,
+ def apply(options: SttpBackendOptions = SttpBackendOptions.Default,
customHttpsContext: Option[HttpsConnectionContext] = None,
customConnectionPoolSettings: Option[ConnectionPoolSettings] = None,
customLog: Option[LoggingAdapter] = None)(
@@ -329,7 +336,7 @@ object AkkaHttpBackend {
AkkaHttpBackend(ActorSystem("sttp"),
ec,
terminateActorSystemOnClose = true,
- connectionTimeout,
+ options,
customHttpsContext,
customConnectionPoolSettings,
customLog)
@@ -343,7 +350,7 @@ object AkkaHttpBackend {
*/
def usingActorSystem(
actorSystem: ActorSystem,
- connectionTimeout: FiniteDuration = SttpBackend.DefaultConnectionTimeout,
+ options: SttpBackendOptions = SttpBackendOptions.Default,
customHttpsContext: Option[HttpsConnectionContext] = None,
customConnectionPoolSettings: Option[ConnectionPoolSettings] = None,
customLog: Option[LoggingAdapter] = None)(
@@ -352,7 +359,7 @@ object AkkaHttpBackend {
AkkaHttpBackend(actorSystem,
ec,
terminateActorSystemOnClose = false,
- connectionTimeout,
+ options,
customHttpsContext,
customConnectionPoolSettings,
customLog)