diff --git a/build.sbt b/build.sbt index d2b4614..78e1455 100644 --- a/build.sbt +++ b/build.sbt @@ -3,16 +3,16 @@ name := "web-push" organization := "com.zivver" -version := "0.2.1" +version := "0.2.4" -scalaVersion := "2.12.1" +scalaVersion := "2.12.6" -crossScalaVersions := Seq("2.11.8", "2.12.1") +crossScalaVersions := Seq("2.11.11", "2.12.6") libraryDependencies ++= Seq( - "com.pauldijou" %% "jwt-core" % "0.10.0", - "org.apache.httpcomponents" % "fluent-hc" % "4.5.2", - "org.bouncycastle" % "bcprov-jdk15on" % "1.55" + "com.pauldijou" %% "jwt-core" % "1.0.0", + "org.apache.httpcomponents" % "fluent-hc" % "4.5.6", + "org.bouncycastle" % "bcprov-jdk15on" % "1.60" ) publishTo := { diff --git a/project/build.properties b/project/build.properties index e0cbc71..467c7ad 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version = 0.13.13 \ No newline at end of file +sbt.version = 1.2.3 diff --git a/src/main/scala/com.zivver.webpush/PushService.scala b/src/main/scala/com.zivver.webpush/PushService.scala index 7d03e5f..02da25e 100644 --- a/src/main/scala/com.zivver.webpush/PushService.scala +++ b/src/main/scala/com.zivver.webpush/PushService.scala @@ -8,7 +8,8 @@ import org.apache.http.HttpResponse import org.apache.http.client.HttpClient import org.apache.http.client.methods.HttpPost import org.apache.http.entity.ByteArrayEntity -import org.apache.http.impl.client.HttpClients +import org.apache.http.client.config.RequestConfig +import org.apache.http.impl.client.HttpClientBuilder import org.apache.http.message.BasicHeader import pdi.jwt.Jwt import pdi.jwt.JwtAlgorithm.ES256 @@ -22,7 +23,20 @@ case class PushService(publicKey: ECPublicKey, privateKey: ECPrivateKey, subject private val base64encoder = Base64.getUrlEncoder private val defaultTtl: Int = 2419200 - private val httpClient: HttpClient = HttpClients.createDefault + private lazy val httpClient: HttpClient = createHttpClient + + /** + * Creates a sensible HttpClient with basic timeouts of 5 secs + * @return + */ + protected def createHttpClient: HttpClient = { + val timeout = 5 + val config = RequestConfig.custom + .setConnectTimeout(timeout * 1000) + .setConnectionRequestTimeout(timeout * 1000) + .setSocketTimeout(timeout * 1000).build + HttpClientBuilder.create.setDefaultRequestConfig(config).build + } /** * Send a data free push notification.