Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(api): migrate to okhttp 5.0.0-alpha.12 #382

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ kotlinx-serialization = "1.6.3"
ktlint = "1.2.1"
licensee = "1.11.0"
minidns = "1.0.4"
okhttp = "4.12.0"
okhttp = "5.0.0-alpha.12"
okio = "3.9.0"
spotless = "6.25.0"
turbine = "1.1.0"
Expand Down Expand Up @@ -69,7 +69,8 @@ minidns-android21 = { module = "org.minidns:minidns-android21", version.ref = "m
okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" }
okhttp-sse = { module = "com.squareup.okhttp3:okhttp-sse", version.ref = "okhttp" }
okhttp-logginginterceptor = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "okhttp" }
okhttp-mockwebserver = { module = "com.squareup.okhttp3:mockwebserver", version.ref = "okhttp" }
okhttp-mockwebserver = { module = "com.squareup.okhttp3:mockwebserver3", version.ref = "okhttp" }
okhttp-mockwebserver-junit4 = { module = "com.squareup.okhttp3:mockwebserver3-junit4", version.ref = "okhttp" }
okio = { module = "com.squareup.okio:okio", version.ref = "okio" }
turbine = { module = "app.cash.turbine:turbine", version.ref = "turbine" }
webrtc = { module = "com.pexip.webrtc:webrtc", version.ref = "webrtc" }
Expand Down
1 change: 1 addition & 0 deletions sdk-api/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ dependencies {
testImplementation(project(":sdk-infinity-test"))
testImplementation(libs.kotlinx.coroutines.test)
testImplementation(libs.okhttp.mockwebserver)
testImplementation(libs.okhttp.mockwebserver.junit4)
}

publishing.publications.withType<MavenPublication> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import kotlinx.serialization.json.Json
import kotlinx.serialization.modules.SerializersModule
import okhttp3.OkHttpClient
import java.net.URL
import java.util.concurrent.TimeUnit
import kotlin.time.Duration.Companion.minutes

/**
* A fluent client for Infinity REST API v2.
Expand Down Expand Up @@ -1149,7 +1149,9 @@ public interface InfinityService {
)

internal fun create(client: OkHttpClient, json: Json) = InfinityServiceImpl(
client = client.newBuilder().readTimeout(1, TimeUnit.MINUTES).build(),
client = client.newBuilder()
.readTimeout(1.minutes)
.build(),
json = json,
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import com.pexip.sdk.infinity.CallId
import kotlinx.serialization.SerializationException
import okhttp3.Request
import okhttp3.Response
import java.util.concurrent.TimeUnit
import kotlin.time.Duration

internal class CallStepImpl(
override val participantStep: ParticipantStepImpl,
Expand All @@ -54,7 +54,7 @@ internal class CallStepImpl(

override fun ack(token: Token): Call<Unit> = RealCall(
client = client.newBuilder()
.readTimeout(0, TimeUnit.SECONDS)
.readTimeout(Duration.ZERO)
.build(),
request = Request.Builder()
.post(EMPTY_REQUEST)
Expand All @@ -71,7 +71,7 @@ internal class CallStepImpl(

override fun ack(request: AckRequest, token: Token): Call<Unit> = RealCall(
client = client.newBuilder()
.readTimeout(0, TimeUnit.SECONDS)
.readTimeout(Duration.ZERO)
.build(),
request = Request.Builder()
.post(json.encodeToRequestBody(request))
Expand Down Expand Up @@ -131,26 +131,26 @@ internal class CallStepImpl(
}

private fun parseUpdate(response: Response) = when (response.code) {
200 -> json.decodeFromResponseBody(UpdateResponseSerializer, response.body!!)
200 -> json.decodeFromResponseBody(UpdateResponseSerializer, response.body)
403 -> response.parse403()
404 -> response.parse404()
else -> throw IllegalStateException()
}

private fun parseDtmf(response: Response) = when (response.code) {
200 -> json.decodeFromResponseBody(BooleanSerializer, response.body!!)
200 -> json.decodeFromResponseBody(BooleanSerializer, response.body)
403 -> response.parse403()
404 -> response.parse404()
else -> throw IllegalStateException()
}

private fun Response.parse403(): Nothing {
val message = json.decodeFromResponseBody(StringSerializer, body!!)
val message = json.decodeFromResponseBody(StringSerializer, body)
throw InvalidTokenException(message)
}

private fun Response.parse404(): Nothing = try {
val message = json.decodeFromResponseBody(StringSerializer, body!!)
val message = json.decodeFromResponseBody(StringSerializer, body)
throw NoSuchConferenceException(message)
} catch (e: SerializationException) {
throw NoSuchNodeException()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ internal class ConferenceStepImpl(

private fun parseRequestToken(response: Response) = when (response.code) {
200 -> {
val r = json.decodeFromResponseBody(RequestTokenResponseSerializer, response.body!!)
val r = json.decodeFromResponseBody(RequestTokenResponseSerializer, response.body)
val directMediaRequested = response.request.tagOrElse { false }
r.copy(directMediaRequested = directMediaRequested)
}
Expand All @@ -286,7 +286,7 @@ internal class ConferenceStepImpl(
}

private fun Response.parseRequestToken403(): Nothing {
val r = json.decodeFromResponseBody(RequestToken403ResponseSerializer, body!!)
val r = json.decodeFromResponseBody(RequestToken403ResponseSerializer, body)
throw when (r) {
is RequiredPinResponse -> RequiredPinException(r.guest_pin == "required")
is RequiredSsoResponse -> RequiredSsoException(r.idp)
Expand All @@ -297,7 +297,7 @@ internal class ConferenceStepImpl(

private fun parseTransformLayout(response: Response) = when (response.code) {
400 -> {
val message = json.decodeFromResponseBody(StringSerializer, response.body!!)
val message = json.decodeFromResponseBody(StringSerializer, response.body)
throw IllegalLayoutTransformException(message)
}
else -> parse(response, BooleanSerializer)
Expand All @@ -312,19 +312,19 @@ internal class ConferenceStepImpl(
response: Response,
deserializer: DeserializationStrategy<T>,
) = when (response.code) {
200 -> json.decodeFromResponseBody(deserializer, response.body!!)
200 -> json.decodeFromResponseBody(deserializer, response.body)
403 -> response.parse403()
404 -> response.parse404()
else -> throw IllegalStateException()
}

private fun Response.parse403(): Nothing {
val message = json.decodeFromResponseBody(StringSerializer, body!!)
val message = json.decodeFromResponseBody(StringSerializer, body)
throw InvalidTokenException(message)
}

private fun Response.parse404(): Nothing = try {
val message = json.decodeFromResponseBody(StringSerializer, body!!)
val message = json.decodeFromResponseBody(StringSerializer, body)
throw NoSuchConferenceException(message)
} catch (e: SerializationException) {
throw NoSuchNodeException()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -304,19 +304,19 @@ internal class ParticipantStepImpl(
response: Response,
deserializer: DeserializationStrategy<T>,
) = when (response.code) {
200 -> json.decodeFromResponseBody(deserializer, response.body!!)
200 -> json.decodeFromResponseBody(deserializer, response.body)
403 -> response.parse403()
404 -> response.parse404()
else -> throw IllegalStateException()
}

private fun Response.parse403(): Nothing {
val message = json.decodeFromResponseBody(StringSerializer, body!!)
val message = json.decodeFromResponseBody(StringSerializer, body)
throw InvalidTokenException(message)
}

private fun Response.parse404(): Nothing = try {
val message = json.decodeFromResponseBody(StringSerializer, body!!)
val message = json.decodeFromResponseBody(StringSerializer, body)
throw NoSuchConferenceException(message)
} catch (e: SerializationException) {
throw NoSuchNodeException()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2022-2023 Pexip AS
* Copyright 2022-2024 Pexip AS
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -22,15 +22,15 @@ import kotlinx.serialization.json.Json
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.sse.EventSources
import java.util.concurrent.TimeUnit
import kotlin.time.Duration

internal class RealEventSourceFactory(
client: OkHttpClient,
private val request: Request,
private val json: Json,
) : EventSourceFactory {

private val factory = EventSources.createFactory(client) { readTimeout(0, TimeUnit.SECONDS) }
private val factory = EventSources.createFactory(client) { readTimeout(Duration.ZERO) }

override fun create(listener: EventSourceListener): EventSource =
RealEventSource(factory, request, json, listener)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ internal class RegistrationStepImpl(
private fun parseRequestToken(response: Response) = when (response.code) {
200 -> json.decodeFromResponseBody(
deserializer = RequestRegistrationTokenResponseSerializer,
body = response.body!!,
body = response.body,
)
401 -> response.parse401()
403 -> response.parse403()
Expand All @@ -126,7 +126,7 @@ internal class RegistrationStepImpl(
private fun parseRefreshToken(response: Response) = when (response.code) {
200 -> json.decodeFromResponseBody(
deserializer = RefreshRegistrationTokenResponseSerializer,
body = response.body!!,
body = response.body,
)
401 -> response.parse401()
403 -> response.parse403()
Expand All @@ -135,32 +135,32 @@ internal class RegistrationStepImpl(
}

private fun parseReleaseToken(response: Response) = when (response.code) {
200 -> json.decodeFromResponseBody(BooleanSerializer, response.body!!)
200 -> json.decodeFromResponseBody(BooleanSerializer, response.body)
401 -> response.parse401()
403 -> response.parse403()
404 -> response.parse404()
else -> throw IllegalStateException()
}

private fun parseRegistrations(response: Response) = when (response.code) {
200 -> json.decodeFromResponseBody(RegistrationResponseSerializer, response.body!!)
200 -> json.decodeFromResponseBody(RegistrationResponseSerializer, response.body)
401 -> response.parse401()
403 -> response.parse403()
404 -> response.parse404()
else -> throw IllegalStateException()
}

private fun Response.parse401(): Nothing {
throw NoSuchRegistrationException(body?.string())
throw NoSuchRegistrationException(body.string())
}

private fun Response.parse403(): Nothing {
val message = json.decodeFromResponseBody(StringSerializer, body!!)
val message = json.decodeFromResponseBody(StringSerializer, body)
throw InvalidTokenException(message)
}

private fun Response.parse404(): Nothing = try {
val message = json.decodeFromResponseBody(StringSerializer, body!!)
val message = json.decodeFromResponseBody(StringSerializer, body)
throw NoSuchConferenceException(message)
} catch (e: SerializationException) {
throw NoSuchNodeException()
Expand Down
Loading