From bb7abc189d9a5f079caa47a4508b5ae585dc8bcf Mon Sep 17 00:00:00 2001 From: adamw Date: Fri, 6 Oct 2017 14:19:44 +0200 Subject: #10: add proxy support --- .../sttp/okhttp/monix/OkHttpMonixBackend.scala | 9 +++--- .../sttp/okhttp/OkHttpClientHandler.scala | 36 +++++++++++++--------- 2 files changed, 25 insertions(+), 20 deletions(-) (limited to 'okhttp-backend') diff --git a/okhttp-backend/monix/src/main/scala/com/softwaremill/sttp/okhttp/monix/OkHttpMonixBackend.scala b/okhttp-backend/monix/src/main/scala/com/softwaremill/sttp/okhttp/monix/OkHttpMonixBackend.scala index 4b24e65..db36f32 100644 --- a/okhttp-backend/monix/src/main/scala/com/softwaremill/sttp/okhttp/monix/OkHttpMonixBackend.scala +++ b/okhttp-backend/monix/src/main/scala/com/softwaremill/sttp/okhttp/monix/OkHttpMonixBackend.scala @@ -85,13 +85,12 @@ object OkHttpMonixBackend { implicit s: Scheduler): SttpBackend[Task, Observable[ByteBuffer]] = new FollowRedirectsBackend(new OkHttpMonixBackend(client, closeClient)(s)) - def apply(connectionTimeout: FiniteDuration = - SttpBackend.DefaultConnectionTimeout)( + def apply(options: SttpBackendOptions = SttpBackendOptions.Default)( implicit s: Scheduler = Scheduler.Implicits.global) : SttpBackend[Task, Observable[ByteBuffer]] = - OkHttpMonixBackend(OkHttpBackend.defaultClient(DefaultReadTimeout.toMillis, - connectionTimeout.toMillis), - closeClient = true)(s) + OkHttpMonixBackend( + OkHttpBackend.defaultClient(DefaultReadTimeout.toMillis, options), + closeClient = true)(s) def usingClient(client: OkHttpClient)(implicit s: Scheduler = Scheduler.Implicits.global) diff --git a/okhttp-backend/src/main/scala/com/softwaremill/sttp/okhttp/OkHttpClientHandler.scala b/okhttp-backend/src/main/scala/com/softwaremill/sttp/okhttp/OkHttpClientHandler.scala index 116878f..bebecac 100644 --- a/okhttp-backend/src/main/scala/com/softwaremill/sttp/okhttp/OkHttpClientHandler.scala +++ b/okhttp-backend/src/main/scala/com/softwaremill/sttp/okhttp/OkHttpClientHandler.scala @@ -148,14 +148,22 @@ abstract class OkHttpBackend[R[_], S](client: OkHttpClient, object OkHttpBackend { - private[okhttp] def defaultClient(readTimeout: Long, - connectionTimeout: Long): OkHttpClient = - new OkHttpClient.Builder() + private[okhttp] def defaultClient( + readTimeout: Long, + options: SttpBackendOptions): OkHttpClient = { + var clientBuilder = new OkHttpClient.Builder() .followRedirects(false) .followSslRedirects(false) - .connectTimeout(connectionTimeout, TimeUnit.MILLISECONDS) + .connectTimeout(options.connectionTimeout.toMillis, TimeUnit.MILLISECONDS) .readTimeout(readTimeout, TimeUnit.MILLISECONDS) - .build() + + clientBuilder = options.proxy match { + case None => clientBuilder + case Some(p) => clientBuilder.proxy(p.asJava) + } + + clientBuilder.build() + } private[okhttp] def updateClientIfCustomReadTimeout[T, S]( r: Request[T, S], @@ -192,12 +200,11 @@ object OkHttpSyncBackend { new FollowRedirectsBackend[Id, Nothing]( new OkHttpSyncBackend(client, closeClient)) - def apply( - connectionTimeout: FiniteDuration = SttpBackend.DefaultConnectionTimeout) + def apply(options: SttpBackendOptions = SttpBackendOptions.Default) : SttpBackend[Id, Nothing] = - OkHttpSyncBackend(OkHttpBackend.defaultClient(DefaultReadTimeout.toMillis, - connectionTimeout.toMillis), - closeClient = true) + OkHttpSyncBackend( + OkHttpBackend.defaultClient(DefaultReadTimeout.toMillis, options), + closeClient = true) def usingClient(client: OkHttpClient): SttpBackend[Id, Nothing] = OkHttpSyncBackend(client, closeClient = false) @@ -243,13 +250,12 @@ object OkHttpFutureBackend { new FollowRedirectsBackend[Future, Nothing]( new OkHttpFutureBackend(client, closeClient)) - def apply(connectionTimeout: FiniteDuration = - SttpBackend.DefaultConnectionTimeout)( + def apply(options: SttpBackendOptions = SttpBackendOptions.Default)( implicit ec: ExecutionContext = ExecutionContext.Implicits.global) : SttpBackend[Future, Nothing] = - OkHttpFutureBackend(OkHttpBackend.defaultClient(DefaultReadTimeout.toMillis, - connectionTimeout.toMillis), - closeClient = true) + OkHttpFutureBackend( + OkHttpBackend.defaultClient(DefaultReadTimeout.toMillis, options), + closeClient = true) def usingClient(client: OkHttpClient)(implicit ec: ExecutionContext = ExecutionContext.Implicits.global) -- cgit v1.2.3