From 7fc249f709db1117bedc87c0396f20e6d477c97a Mon Sep 17 00:00:00 2001 From: Gouri Panda Date: Mon, 2 Oct 2023 09:57:48 +0530 Subject: [PATCH] Authentication created for DWDS app --- .../core/data/remote/BasicAuthInterceptor.kt | 42 +++++++++++++++++++ .../core/di/modules/NetworkModule.kt | 2 + 2 files changed, 44 insertions(+) create mode 100644 core/src/main/java/org/kiwix/kiwixmobile/core/data/remote/BasicAuthInterceptor.kt diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/data/remote/BasicAuthInterceptor.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/data/remote/BasicAuthInterceptor.kt new file mode 100644 index 000000000..55ef831dd --- /dev/null +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/data/remote/BasicAuthInterceptor.kt @@ -0,0 +1,42 @@ +/* + * Kiwix Android + * Copyright (c) 2023 Kiwix + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +package org.kiwix.kiwixmobile.core.data.remote + +import okhttp3.Interceptor +import okhttp3.Request +import okhttp3.Response +import java.io.IOException + +class BasicAuthInterceptor : Interceptor { + + @Throws(IOException::class) + override fun intercept(chain: Interceptor.Chain): Response { + val request: Request = chain.request() + val url = request.url.toString() + if (url.contains("dwds")) { + val userName = System.getenv("DWDS_HTTP_BASIC_ACCESS_AUTHENTICATION_USER_NAME") ?: "" + val password = System.getenv("DWDS_HTTP_BASIC_ACCESS_AUTHENTICATION_PASSWORD") ?: "" + val credentials = okhttp3.Credentials.basic(userName, password) + val authenticatedRequest: Request = request.newBuilder() + .header("Authorization", credentials).build() + return chain.proceed(authenticatedRequest) + } + return chain.proceed(request) + } +} diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/di/modules/NetworkModule.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/di/modules/NetworkModule.kt index 0e4cefa35..fda7e4d9b 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/di/modules/NetworkModule.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/di/modules/NetworkModule.kt @@ -24,6 +24,7 @@ import okhttp3.logging.HttpLoggingInterceptor import okhttp3.logging.HttpLoggingInterceptor.Level.BASIC import okhttp3.logging.HttpLoggingInterceptor.Level.NONE import org.kiwix.kiwixmobile.core.BuildConfig +import org.kiwix.kiwixmobile.core.data.remote.BasicAuthInterceptor import org.kiwix.kiwixmobile.core.data.remote.KiwixService import org.kiwix.kiwixmobile.core.data.remote.KiwixService.ServiceCreator import org.kiwix.kiwixmobile.core.data.remote.UserAgentInterceptor @@ -51,6 +52,7 @@ class NetworkModule { } ) .addNetworkInterceptor(UserAgentInterceptor(USER_AGENT)) + .addInterceptor(BasicAuthInterceptor()) .build() }