From b6872426e27846589838c367c59d610e54668f08 Mon Sep 17 00:00:00 2001 From: Juan Pedro Moreno Date: Thu, 11 Aug 2016 22:08:54 +0200 Subject: [PATCH 1/2] Adds the ability to setup timeouts through client apply method --- .../org/scalaexercises/evaluator/EvaluatorClient.scala | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/src/main/scala/org/scalaexercises/evaluator/EvaluatorClient.scala b/client/src/main/scala/org/scalaexercises/evaluator/EvaluatorClient.scala index 43a90c1c..395b32ab 100644 --- a/client/src/main/scala/org/scalaexercises/evaluator/EvaluatorClient.scala +++ b/client/src/main/scala/org/scalaexercises/evaluator/EvaluatorClient.scala @@ -24,7 +24,11 @@ class EvaluatorClient(url: String, object EvaluatorClient { - def apply(url: String, authKey: String) = new EvaluatorClient(url, authKey) + def apply(url: String, + authKey: String, + connTimeout: Duration = 1.second, + readTimeout: Duration = 10.seconds) = + new EvaluatorClient(url, authKey, connTimeout, readTimeout) implicit class EvaluationIOSyntaxXOR[A]( evalIO: EvalIO[EvaluationResponse[A]]) { From 16b842276da1089bae4f720986446a0c4dc5bb02 Mon Sep 17 00:00:00 2001 From: Juan Pedro Moreno Date: Thu, 11 Aug 2016 22:55:19 +0200 Subject: [PATCH 2/2] Provides other client fixes --- .../org/scalaexercises/evaluator/api/Evaluator.scala | 6 ++++-- .../evaluator/free/algebra/EvaluatorOps.scala | 8 ++++---- .../org/scalaexercises/evaluator/http/HttpClient.scala | 4 ++-- .../evaluator/http/HttpRequestBuilder.scala | 2 +- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/client/src/main/scala/org/scalaexercises/evaluator/api/Evaluator.scala b/client/src/main/scala/org/scalaexercises/evaluator/api/Evaluator.scala index fc91a7ad..332fb92e 100644 --- a/client/src/main/scala/org/scalaexercises/evaluator/api/Evaluator.scala +++ b/client/src/main/scala/org/scalaexercises/evaluator/api/Evaluator.scala @@ -27,8 +27,10 @@ class Evaluator { dependencies: List[Dependency] = Nil, code: String): EvaluationResponse[EvalResponse] = httpClient.post[EvalResponse]( - url, - authKey, + url = url, + secretKey = authKey, + connTimeout = connTimeout, + readTimeout = readTimeout, data = EvalRequest(resolvers, dependencies, code).asJson.noSpaces) } diff --git a/client/src/main/scala/org/scalaexercises/evaluator/free/algebra/EvaluatorOps.scala b/client/src/main/scala/org/scalaexercises/evaluator/free/algebra/EvaluatorOps.scala index e7d5aaa4..a78ee978 100644 --- a/client/src/main/scala/org/scalaexercises/evaluator/free/algebra/EvaluatorOps.scala +++ b/client/src/main/scala/org/scalaexercises/evaluator/free/algebra/EvaluatorOps.scala @@ -15,8 +15,8 @@ import scala.concurrent.duration.Duration sealed trait EvaluatorOp[A] final case class Evaluates(url: String, authKey: String, - connTimeout: Duration = 1.second, - readTimeout: Duration = 10.seconds, + connTimeout: Duration, + readTimeout: Duration, resolvers: List[String] = Nil, dependencies: List[Dependency] = Nil, code: String) @@ -27,8 +27,8 @@ class EvaluatorOps[F[_]](implicit I: Inject[EvaluatorOp, F]) { def evaluates( url: String, authKey: String, - connTimeout: Duration = 1.second, - readTimeout: Duration = 10.seconds, + connTimeout: Duration, + readTimeout: Duration, resolvers: List[String] = Nil, dependencies: List[Dependency] = Nil, code: String diff --git a/client/src/main/scala/org/scalaexercises/evaluator/http/HttpClient.scala b/client/src/main/scala/org/scalaexercises/evaluator/http/HttpClient.scala index c80eb98e..da58573e 100644 --- a/client/src/main/scala/org/scalaexercises/evaluator/http/HttpClient.scala +++ b/client/src/main/scala/org/scalaexercises/evaluator/http/HttpClient.scala @@ -26,8 +26,8 @@ class HttpClient { url: String, secretKey: String, method: String = "post", - connTimeout: Duration = 1.second, - readTimeout: Duration = 10.seconds, + connTimeout: Duration, + readTimeout: Duration, headers: Headers = Map.empty, data: String )(implicit D: Decoder[A]): EvaluationResponse[A] = diff --git a/client/src/main/scala/org/scalaexercises/evaluator/http/HttpRequestBuilder.scala b/client/src/main/scala/org/scalaexercises/evaluator/http/HttpRequestBuilder.scala index 86244957..5485cbec 100644 --- a/client/src/main/scala/org/scalaexercises/evaluator/http/HttpRequestBuilder.scala +++ b/client/src/main/scala/org/scalaexercises/evaluator/http/HttpRequestBuilder.scala @@ -30,9 +30,9 @@ case class HttpRequestBuilder( body .fold(request)( request - .postData(_) .option(HttpOptions.connTimeout(connTimeout.toMillis.toInt)) .option(HttpOptions.readTimeout(readTimeout.toMillis.toInt)) + .postData(_) .header("content-type", "application/json")) .asString }