Skip to content

Commit da546de

Browse files
author
Vimalraj Vijay
committed
Auth Interceptors Added
1 parent fb26b71 commit da546de

File tree

4 files changed

+63
-6
lines changed

4 files changed

+63
-6
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.vimalvijay.mymodule.commonutils
2+
3+
4+
import android.content.SharedPreferences
5+
import javax.inject.Inject
6+
7+
class SessionDataManager @Inject constructor(var sharedPreferences: SharedPreferences) {
8+
9+
fun clearAll() {
10+
sharedPreferences.edit().clear().apply()
11+
}
12+
13+
var authToken: String
14+
get() = sharedPreferences.getString(::authToken.name, "")!!
15+
set(value) {sharedPreferences.edit().putString(::authToken.name, value).apply() }
16+
17+
}

app/src/main/java/com/vimalvijay/mymodule/di/modules/AppModule.kt

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,24 @@
11
package com.vimalvijay.mymodule.di.modules
22

3+
import android.app.Application
34
import android.content.Context
5+
import android.content.SharedPreferences
46
import com.google.gson.FieldNamingPolicy
57
import com.google.gson.GsonBuilder
68
import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
79
import com.vimalvijay.mymodule.BuildConfig
10+
import com.vimalvijay.mymodule.R
811
import com.vimalvijay.mymodule.commonutils.CustomProgressbar
12+
import com.vimalvijay.mymodule.commonutils.SessionDataManager
913
import com.vimalvijay.mymodule.network.api.ApiConstants
1014
import com.vimalvijay.mymodule.network.api.ApiService
15+
import com.vimalvijay.mymodule.network.interceptors.AuthInterceptor
1116
import com.vimalvijay.mymodule.network.interceptors.LoggingInterceptor
1217
import dagger.Module
1318
import dagger.Provides
1419
import dagger.hilt.InstallIn
15-
import dagger.hilt.android.components.ApplicationComponent
1620
import dagger.hilt.android.qualifiers.ApplicationContext
21+
import dagger.hilt.components.SingletonComponent
1722
import okhttp3.OkHttpClient
1823
import okhttp3.logging.HttpLoggingInterceptor
1924
import retrofit2.Retrofit
@@ -22,7 +27,7 @@ import javax.inject.Singleton
2227

2328

2429
@Module
25-
@InstallIn(ApplicationComponent::class)
30+
@InstallIn(SingletonComponent::class)
2631
class AppModule {
2732
/**
2833
* Application's Base URL
@@ -35,15 +40,16 @@ class AppModule {
3540
*/
3641
@Provides
3742
@Singleton
38-
fun provideOkHttpClient(@ApplicationContext context: Context): OkHttpClient {
43+
fun provideOkHttpClient(@ApplicationContext context: Context,sessionDataManager: SessionDataManager): OkHttpClient {
3944
val loggingInterceptor = HttpLoggingInterceptor()
45+
loggingInterceptor.level = HttpLoggingInterceptor.Level.HEADERS
4046
loggingInterceptor.level = HttpLoggingInterceptor.Level.BODY
4147
val okHttpClient = OkHttpClient.Builder()
48+
okHttpClient.addInterceptor(AuthInterceptor(sessionDataManager))
49+
okHttpClient.addInterceptor(LoggingInterceptor(context))
4250
if (BuildConfig.DEBUG) {
4351
okHttpClient.addInterceptor(loggingInterceptor)
4452
}
45-
// okHttpClient.addInterceptor(ErrorInterceptor(context))
46-
okHttpClient.addInterceptor(LoggingInterceptor(context))
4753
return okHttpClient.build()
4854
}
4955

@@ -81,7 +87,18 @@ class AppModule {
8187
* Custom Progress Bar
8288
*/
8389
@Provides
90+
@Singleton
8491
fun provideCustomProgressBar(): CustomProgressbar {
8592
return CustomProgressbar()
8693
}
94+
95+
/**
96+
* SessionDataManager
97+
*/
98+
@Provides
99+
@Singleton
100+
fun provideSessionManager(application: Application): SessionDataManager {
101+
return SessionDataManager(application.getSharedPreferences(application.resources.getString(R.string.app_name), Context.MODE_PRIVATE))
102+
}
103+
87104
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.vimalvijay.mymodule.network.interceptors
2+
3+
import com.vimalvijay.mymodule.commonutils.SessionDataManager
4+
import okhttp3.Interceptor
5+
import okhttp3.Request
6+
import okhttp3.Response
7+
8+
class AuthInterceptor(var sessionDataManager: SessionDataManager) : Interceptor {
9+
private var requestBuilder: Request.Builder? = null
10+
11+
override fun intercept(chain: Interceptor.Chain): Response {
12+
try {
13+
val original = chain.request()
14+
requestBuilder = original.newBuilder().header("Authorization", sessionDataManager.authToken)
15+
.header("channel", "mobile")
16+
.method(original.method(), original.body())
17+
} catch (e: Exception) {
18+
e.printStackTrace()
19+
}
20+
val request = requestBuilder!!.build()
21+
return chain.proceed(request)
22+
}
23+
}

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Top-level build file where you can add configuration options common to all sub-projects/modules.
22
buildscript {
33
ext.kotlin_version = "1.3.72"
4-
ext.hilt_version = '2.28-alpha'
4+
ext.hilt_version = '2.31.2-alpha'
55
repositories {
66
google()
77
jcenter()

0 commit comments

Comments
 (0)