Links the Tor okhttpclient with nests

This commit is contained in:
Vitor Pamplona
2026-04-28 14:45:14 -04:00
parent 66557268f7
commit 17054fc35a
4 changed files with 9 additions and 8 deletions
@@ -43,7 +43,7 @@ import kotlin.math.min
* the process; the default constructor creates a dedicated client.
*/
class OkHttpNestsClient(
private val http: OkHttpClient = OkHttpClient(),
private val httpClient: (String) -> OkHttpClient,
) : NestsClient {
override suspend fun mintToken(
room: NestsRoomConfig,
@@ -142,7 +142,7 @@ class OkHttpNestsClient(
val request = buildRequest()
val response: Response =
try {
http.newCall(request).execute()
httpClient(url).newCall(request).execute()
} catch (e: SocketException) {
transportError = e
if (++transportAttempts >= MAX_TRANSPORT_RETRIES) throw NestsException("Failed to reach $url", e)
@@ -99,7 +99,7 @@ class OkHttpNestsClientRateLimitTest {
server.enqueue(success(token = "T1"))
try {
val client = OkHttpNestsClient(http = OkHttpClient())
val client = OkHttpNestsClient(httpClient = { OkHttpClient() })
val token =
client.mintToken(
room = roomConfig(server.baseUrl),
@@ -122,7 +122,7 @@ class OkHttpNestsClientRateLimitTest {
repeat(MAX_RATE_LIMIT_RETRIES + 2) { server.enqueue(rateLimited(retryAfterSeconds = 0)) }
try {
val client = OkHttpNestsClient(http = OkHttpClient())
val client = OkHttpNestsClient(httpClient = { OkHttpClient() })
val ex =
assertFailsWith<NestsException> {
client.mintToken(
@@ -149,7 +149,7 @@ class OkHttpNestsClientRateLimitTest {
server.enqueue(StubResponse(401, "Unauthorized", body = "{\"error\":\"bad sig\"}"))
try {
val client = OkHttpNestsClient(http = OkHttpClient())
val client = OkHttpNestsClient(httpClient = { OkHttpClient() })
val ex =
assertFailsWith<NestsException> {
client.mintToken(
@@ -140,7 +140,7 @@ class NostrNestsAuthFailureInteropTest {
// Per moq-auth's regex /^nests\/\d+:[0-9a-f]{64}:[a-zA-Z0-9._-]+$/
// — uppercase pubkey hex doesn't match the `[0-9a-f]` class.
val signer = NostrSignerInternal(KeyPair())
val client = OkHttpNestsClient(http = http)
val client = OkHttpNestsClient(httpClient = { http })
val room =
NestsRoomConfig(
authBaseUrl = harness.authBaseUrl,
@@ -171,7 +171,7 @@ class NostrNestsAuthFailureInteropTest {
// with `put: [<their-pubkey>]`. Lock that in so a future
// hostlist gate doesn't sneak in unnoticed.
val signer = NostrSignerInternal(KeyPair())
val client = OkHttpNestsClient(http = http)
val client = OkHttpNestsClient(httpClient = { http })
val room =
NestsRoomConfig(
authBaseUrl = harness.authBaseUrl,