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

money.rave.common.backend.market.MarketHttpClient.kt Maven / Gradle / Ivy

package money.rave.common.backend.market

import money.rave.common.backend.FailureHttpRequestException
import money.rave.common.backend.QueryParameters
import money.rave.common.backend.client.AuthenticatedRequestBuilder
import money.rave.common.backend.client.http.HttpClient
import money.rave.common.backend.http.HttpMethod
import okhttp3.OkHttpClient
import okhttp3.Request

class MarketHttpClient(
    private val baseUrl: String,
    private val authenticatedRequestBuilder: AuthenticatedRequestBuilder,
) : HttpClient {

    private val client = OkHttpClient()

    override suspend fun get(url: String, queryParameters: QueryParameters?): String? =
        request("$baseUrl$url", HttpMethod.GET, queryParameters, null)

    override suspend fun post(url: String, body: String, queryParameters: QueryParameters?): String? =
        request("$baseUrl$url", HttpMethod.POST, queryParameters, body)

    private fun request(url: String, httpMethod: HttpMethod, queryParameters: QueryParameters?, body: String?): String? {
        val builder = Request.Builder()
        val request = authenticatedRequestBuilder.build(builder, url, httpMethod, queryParameters, body)

        val response = client.newCall(request).execute()
        if (!response.isSuccessful) {
            throw FailureHttpRequestException(url, httpMethod, queryParameters, message = response.body?.string())
        }

        return response.body?.string()
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy