и донастроить его под свои нужды?
например, я сделать клиент ктора настраиваемым (например, для моков, логгирования и чего-либо ещё). но также я хочу, чтобы клиент имел сериализацию, вебсокеты, whatever else.
есть какой-нибудь метод типа newBuilder() в okhttp
хз, но я бы наверное мокал не сам httpClient, а его движок. И такое даже есть: https://github.com/ktorio/ktor/blob/main/ktor-client/ktor-client-mock/common/src/io/ktor/client/engine/mock/MockEngine.kt
я и использую MockEngine.
Так а чем не подходит просто дать возможность задать кастомную конфигурацию в виде (HttpClientConfig) -> Unit, как и делает сам ktor?
class Repository(baseClient: HttpClient) { ... } первый вопрос: куда надо лямбду пихать? второй вопрос: что если мне надо иметь фичу сериализации в одном классе, но надо иметь другую фичу сериализации в другом классе?
Это уже разные клиенты надо делать, а на вход подавать какую-то "фабрику", в которой уже будет метод createClient(config: (KtorConfig) -> Unit)
тогда мне это не поможет иметь один клиент на все репозитории 😔
Так если им нужна разная конфигурация, о каком одном клиенте может идти речь? Главное чтобы engine был один, а обвязку вокруг него создать несколько раз не так страшно
все тредпулы находятся в enigne, получается?
Да, соединениями заправляет engine, остальное просто обвязка для удобного делания запросов и навешивания расширений
Задачу не до конца понял, так что вероятно не подойдет, но озвучу: Как вариант можно конечное количество инстансов предсаздать и в DI qualifier'ами / профилями инжектить в нужное место нужный
Обсуждают сегодня