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

com.avito.reportviewer.ReportsApiFactory.kt Maven / Gradle / Ivy

Go to download

Collection of infrastructure libraries and gradle plugins of Avito Android project

There is a newer version: 2023.22
Show newest version
package com.avito.reportviewer

import com.avito.http.HttpClientProvider
import com.avito.http.RetryInterceptor
import com.avito.jsonrpc.JsonRpcClient
import com.avito.logger.LoggerFactory
import com.avito.report.serialize.createReportGson
import com.avito.reportviewer.internal.ReportsApiImpl
import java.util.concurrent.TimeUnit

public object ReportsApiFactory {

    private const val DEFAULT_TIMEOUT_SEC = 10L

    public fun create(
        host: String,
        httpClientProvider: HttpClientProvider,
        loggerFactory: LoggerFactory,
        retryRequests: Boolean = true,
        readWriteTimeoutSec: Long = DEFAULT_TIMEOUT_SEC
    ): ReportsApi {
        return ReportsApiImpl(
            loggerFactory = loggerFactory,
            client = JsonRpcClient(
                host = host,
                httpClient = httpClientProvider.provide()
                    .writeTimeout(readWriteTimeoutSec, TimeUnit.SECONDS)
                    .readTimeout(readWriteTimeoutSec, TimeUnit.SECONDS)
                    .apply {
                        if (retryRequests) {
                            addInterceptor(
                                RetryInterceptor(
                                    retries = 3,
                                    allowedMethods = listOf("POST")
                                )
                            )
                        }
                    }
                    .build(),
                gson = createReportGson()
            )
        )
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy