Как удалить набор заголовков с помощью плагина для конкретного запроса API в KTORAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как удалить набор заголовков с помощью плагина для конкретного запроса API в KTOR

Сообщение Anonymous »

Я создал собственный плагин для установки заголовков запросов в ktor
internal fun headersPlugin(defaultHeaders: DefaultHeaders) = createClientPlugin("headersPlugin") {
onRequest { request, _ ->
request.headers.apply {
append("requestFrom", defaultHeaders.requestFrom)
append("clientType", defaultHeaders.clientType)
append("User-Agent", defaultHeaders.userAgent)
append("AUTHTOKEN", defaultHeaders.authToken)
append("SESSIONID", defaultHeaders.sessionId)
}
}
}

Теперь я хочу удалить AUTH TOKEN для определенного запроса API в
fun getApiClient(): HttpClient = httpClient {

install(headersPlugin(DefaultHeaders()))

defaultRequest {
/* logic to remove AUTHTOKEN header by checking some annotation or something when a purticular API request is annotated or some variable to check */
}

/* Logging */
install(Logging) {
logger = object : Logger {
override fun log(message: String) {
Napier.v("HTTP Client", null, message)
}
}

level = LogLevel.ALL
}
}.also {
Napier.base(DebugAntilog())
}

Я уже использую модификацию и пытаюсь перейти на KTOR
при модернизации я аннотирую метод в классе обслуживания аннотацией @IGNORE и в перехватчике я проверяю аннотацию IGNORE и удаляю заголовок, если он присутствует
val tag: Invocation? = request.tag(Invocation::class.java)
val method: Method? = tag?.method()

builder
.addHeader("requestFrom", networkUtil.requestFrom)
.addHeader("clientType", "17")
.addHeader("User-Agent", networkUtil.userAgentInfo)
.addHeader("AUTHTOKEN", networkUtil.authKey)
.addHeader("SESSIONID", networkUtil.sessionId)

method?.also {
it.getAnnotation(Ignore::class.java)?.run {
if (this.keyName.contains(Ignore.AUTH_TOKEN)) {
builder.removeHeader("AUTHTOKEN")
}

if (!this.keyName.contains(Ignore.BASE_URL)) {
builder.url(reformedUrl)
}

if (this.keyName.contains(Ignore.SESSION_ID) || networkUtil.sessionId.isEmpty()) {
builder.removeHeader("SESSIONID")
}
} ?: run {
builder.url(reformedUrl)
}


Подробнее здесь: https://stackoverflow.com/questions/789 ... st-in-ktor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»