Darryl Pierce
09/04/2025, 12:09 PMstreetsofboston
09/04/2025, 12:35 PMDarryl Pierce
09/04/2025, 12:37 PMstreetsofboston
09/04/2025, 12:40 PMimport io.ktor.client.*
import io.ktor.client.engine.cio.*
import io.ktor.client.plugins.cache.*
import io.ktor.client.plugins.cache.storage.*
import java.io.File
fun main() {
val cacheDirectory = File("my_app_cache")
val client = HttpClient(CIO) {
install(HttpCache) {
publicStorage(FileStorage(cacheDirectory)) // Use FileStorage for persistent caching
}
}
// ... make HTTP requests with the client ...
}
Darryl Pierce
09/04/2025, 12:40 PMDarryl Pierce
09/04/2025, 12:54 PMstreetsofboston
09/04/2025, 1:02 PMstreetsofboston
09/04/2025, 1:05 PMDarryl Pierce
09/04/2025, 1:05 PMstreetsofboston
09/04/2025, 1:17 PMimport io.ktor.client.engine.darwin.Darwin
import io.ktor.client.engine.darwin.DarwinClientEngineConfig
import io.ktor.client.engine.darwin.KtorNSURLSessionDelegate
import io.ktor.client.HttpClient
import platform.Foundation.NSURLCache
import platform.Foundation.NSURLRequestReloadIgnoringLocalCacheData
import platform.Foundation.NSURLSession
import platform.Foundation.NSURLSessionConfiguration
val client = HttpClient(Darwin) {
engine {
val ktorDelegate = KtorNSURLSessionDelegate()
val sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration().apply {
urlCache = NSURLCache.sharedURLCache()
requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData
}
val session = NSURLSession.sessionWithConfiguration(
configuration = sessionConfiguration,
delegate = ktorDelegate,
delegateQueue = null
)
// Pass the preconfigured session and delegate to the Ktor engine.
usePreconfiguredSession(session, ktorDelegate)
}
}
Darryl Pierce
09/04/2025, 1:32 PMAlbilaga
09/04/2025, 2:05 PMexpect
and actual