All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.http4s.client.blaze.bits.scala Maven / Gradle / Ivy

package org.http4s.client.blaze

import java.security.{NoSuchAlgorithmException, SecureRandom}
import java.security.cert.X509Certificate
import javax.net.ssl.{SSLContext, X509TrustManager}
import java.util.concurrent._

import org.http4s.BuildInfo
import org.http4s.headers.{AgentProduct, `User-Agent`}
import org.http4s.blaze.util.TickWheelExecutor
import org.http4s.client.impl.DefaultExecutor
import org.http4s.util.threads

import scala.concurrent.duration._
import scala.math.max
import scalaz.concurrent.Task

private[blaze] object bits {
  // Some default objects
  val DefaultTimeout: Duration = 60.seconds
  val DefaultBufferSize: Int = 8*1024
  val DefaultUserAgent = Some(`User-Agent`(AgentProduct("http4s-blaze", Some(BuildInfo.version))))

  val ClientTickWheel = new TickWheelExecutor()



  def getExecutor(config: BlazeClientConfig): (ExecutorService, Task[Unit]) = config.customExecutor match {
    case Some(exec) => (exec, Task.now(()))
    case None =>
      val exec = DefaultExecutor.newClientDefaultExecutorService("blaze-client")
      (exec, Task { exec.shutdown() })
  }

  /** The sslContext which will generate SSL engines for the pipeline
    * Override to provide more specific SSL managers */
  lazy val sslContext = defaultTrustManagerSSLContext()

  private class DefaultTrustManager extends X509TrustManager {
    def getAcceptedIssuers(): Array[X509Certificate] =  new Array[java.security.cert.X509Certificate](0)
    def checkClientTrusted(certs: Array[X509Certificate], authType: String) { }
    def checkServerTrusted(certs: Array[X509Certificate], authType: String) { }
  }

  private def defaultTrustManagerSSLContext(): SSLContext = try {
    val sslContext = SSLContext.getInstance("TLS")
    sslContext.init(null, Array(new DefaultTrustManager()), new SecureRandom())
    sslContext
  } catch {
    case e: NoSuchAlgorithmException => throw new ExceptionInInitializerError(e)
    case e: ExceptionInInitializerError => throw new ExceptionInInitializerError(e)
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy