Skip to content

v11.0.0

Compare
Choose a tag to compare
@losizm losizm released this 10 Nov 06:21

What's New?

HttpClient instances are now built from ClientSettings. And to perform common operations on client requests and their responses, you can add filters to the settings.

import java.io.File
import scamper.Uri
import scamper.client.HttpClient
import scamper.client.Implicits._
import scamper.cookies._

// Get default settings
val settings = HttpClient.settings()

// Adjust settings
settings.bufferSize(8192)
settings.readTimeout(9999)
settings.continueTimeout(1000)

// Set truststore for HTTPS connections
settings.trust(new File("./etc/truststore.jks"))

// Add request filter
settings.outgoing { req =>
  def findCookies(target: Uri): Seq[PlainCookie] = ???
  req.withCookies { findCookies(req.absoluteTarget) : _* }
}

// Add response filter
settings.incoming { res =>
  def storeCookies(target: Uri, cookies: Seq[SetCookie]): Unit = ???
  storeCookies(res.absoluteTarget, res.cookies)
  res
}

// Create client
val client = settings.create()

Note you can add multiple request and response filters. If multiple filters are added, each is executed in the order it is added. That is, request filters are executed in order, and response filters are executed in order.