Added pending API calls, like upload log, result upload and device update
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
package com.example.hpostesting.domain
|
||||
|
||||
import android.content.SharedPreferences
|
||||
import com.example.hpostesting.data.constant.Constants
|
||||
import okhttp3.Interceptor
|
||||
import okhttp3.Response
|
||||
|
||||
class AuthInterceptor(private val sharedPreferences: SharedPreferences) : Interceptor {
|
||||
|
||||
override fun intercept(chain: Interceptor.Chain): Response {
|
||||
var request = chain.request()
|
||||
|
||||
val token = sharedPreferences.getString(Constants.ACCESS_TOKEN, null)
|
||||
|
||||
if (token != null) {
|
||||
request = request.newBuilder()
|
||||
.addHeader("Authorization", "Bearer $token")
|
||||
.build()
|
||||
}
|
||||
|
||||
return chain.proceed(request)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.example.hpostesting.domain
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
import java.io.IOException
|
||||
|
||||
class LogFileManager(private val context: Context) {
|
||||
|
||||
fun createLogFile(): File? {
|
||||
val unixTime = System.currentTimeMillis() / 1000L
|
||||
val logFileName = "hpos_$unixTime.log"
|
||||
|
||||
return try {
|
||||
val process = Runtime.getRuntime().exec("logcat -d -v threadtime")
|
||||
val logBuilder = StringBuilder()
|
||||
val input = process.inputStream
|
||||
val bufferedReader = input.bufferedReader()
|
||||
|
||||
bufferedReader.forEachLine { line ->
|
||||
logBuilder.append(line).append("\n")
|
||||
}
|
||||
|
||||
val logContent = logBuilder.toString()
|
||||
|
||||
val file = File(context.filesDir, logFileName)
|
||||
val fileOutputStream = FileOutputStream(file)
|
||||
fileOutputStream.write(logContent.toByteArray())
|
||||
fileOutputStream.close()
|
||||
|
||||
file
|
||||
} catch (e: IOException) {
|
||||
Log.e("LogFileManager", "Error creating log file: ${e.message}")
|
||||
null
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,11 +2,12 @@ package com.example.hpostesting.domain.di
|
||||
|
||||
import android.app.Application
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.content.res.AssetManager
|
||||
import androidx.room.Room
|
||||
import com.example.hpostesting.data.api.HPOSApi
|
||||
import com.example.hpostesting.data.api.MolbioAuthApi
|
||||
import com.example.hpostesting.data.api.MolbioResultApi
|
||||
import com.example.hpostesting.data.api.PropertyProvider
|
||||
import com.example.hpostesting.data.constant.Constants.BASE_URL
|
||||
import com.example.hpostesting.data.dao.HemoCubeDao
|
||||
import com.example.hpostesting.data.dao.MyDatabase
|
||||
import com.example.hpostesting.data.dao.UserDao
|
||||
@@ -14,6 +15,8 @@ import com.example.hpostesting.data.datasource.LocalFileDataSource
|
||||
import com.example.hpostesting.data.repository.DatabaseRepository
|
||||
import com.example.hpostesting.data.repository.LocalFileRepository
|
||||
import com.example.hpostesting.data.repository.Repository
|
||||
import com.example.hpostesting.domain.AuthInterceptor
|
||||
import com.example.hpostesting.domain.LogFileManager
|
||||
import com.example.hpostesting.domain.SaveRawData
|
||||
import com.example.hpostesting.domain.SaveRawDataTest
|
||||
import com.example.hpostesting.util.PropertyProviderImpl
|
||||
@@ -25,6 +28,8 @@ import dagger.hilt.components.SingletonComponent
|
||||
import okhttp3.OkHttpClient
|
||||
import retrofit2.Retrofit
|
||||
import retrofit2.converter.gson.GsonConverterFactory
|
||||
import java.util.concurrent.TimeUnit
|
||||
import javax.inject.Named
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
@@ -36,9 +41,7 @@ object AppModule {
|
||||
fun provideMyDatabase(@ApplicationContext context: Context): MyDatabase {
|
||||
return Room.databaseBuilder(
|
||||
context, MyDatabase::class.java, "my_database"
|
||||
)
|
||||
.fallbackToDestructiveMigration()
|
||||
.build()
|
||||
).fallbackToDestructiveMigration().build()
|
||||
}
|
||||
|
||||
@Provides
|
||||
@@ -75,14 +78,20 @@ object AppModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideDatabaseRepository(hposApi: HPOSApi): DatabaseRepository {
|
||||
return DatabaseRepository(hposApi = hposApi)
|
||||
fun provideDatabaseRepository(
|
||||
@Named("Auth") molbioAuthApi: MolbioAuthApi,
|
||||
molbioResultApi: MolbioResultApi
|
||||
): DatabaseRepository {
|
||||
return DatabaseRepository(molbioAuthApi = molbioAuthApi, molbioResultApi = molbioResultApi)
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideRepository(hposApi: HPOSApi): Repository {
|
||||
return DatabaseRepository(hposApi)
|
||||
fun provideRepository(
|
||||
@Named("Auth") molbioAuthApi: MolbioAuthApi,
|
||||
molbioResultApi: MolbioResultApi
|
||||
): Repository {
|
||||
return DatabaseRepository(molbioAuthApi, molbioResultApi)
|
||||
}
|
||||
|
||||
@Provides
|
||||
@@ -99,23 +108,59 @@ object AppModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideOkHttpClient(): OkHttpClient {
|
||||
return OkHttpClient.Builder()
|
||||
.build()
|
||||
fun provideSharedPreferences(@ApplicationContext context: Context): SharedPreferences {
|
||||
return context.getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE)
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideRetrofit(propertyProvider: PropertyProvider, client: OkHttpClient): Retrofit {
|
||||
return Retrofit.Builder()
|
||||
.baseUrl(propertyProvider.getProperty("BASE_URL"))
|
||||
.client(client)
|
||||
.addConverterFactory(GsonConverterFactory.create())
|
||||
.build()
|
||||
fun provideAuthInterceptor(sharedPreferences: SharedPreferences): AuthInterceptor {
|
||||
return AuthInterceptor(sharedPreferences)
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideEntryApi(retrofit: Retrofit): HPOSApi =
|
||||
retrofit.create(HPOSApi::class.java)
|
||||
@Named("Auth")
|
||||
fun provideAuthOkHttpClient(authInterceptor: AuthInterceptor): OkHttpClient {
|
||||
return OkHttpClient.Builder().addInterceptor(authInterceptor)
|
||||
.connectTimeout(30, TimeUnit.SECONDS).readTimeout(30, TimeUnit.SECONDS).build()
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideOkHttpClient(): OkHttpClient =
|
||||
OkHttpClient.Builder().connectTimeout(30, TimeUnit.SECONDS)
|
||||
.readTimeout(30, TimeUnit.SECONDS).build()
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideRetrofit(
|
||||
propertyProvider: PropertyProvider,@Named("Auth") client: OkHttpClient
|
||||
): Retrofit {
|
||||
return Retrofit.Builder().baseUrl(propertyProvider.getProperty("BASE_URL")).client(client)
|
||||
.addConverterFactory(GsonConverterFactory.create()).build()
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
@Named("Auth")
|
||||
fun provideAuthRetrofit(propertyProvider: PropertyProvider, client: OkHttpClient): Retrofit {
|
||||
return Retrofit.Builder().baseUrl(propertyProvider.getProperty("BASE_URL")).client(client)
|
||||
.addConverterFactory(GsonConverterFactory.create()).build()
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
@Named("Auth")
|
||||
fun provideAuthApi(@Named("Auth") retrofit: Retrofit): MolbioAuthApi =
|
||||
retrofit.create(MolbioAuthApi::class.java)
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideResultApi(retrofit: Retrofit): MolbioResultApi =
|
||||
retrofit.create(MolbioResultApi::class.java)
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
fun provideLogFileManager(context: Context): LogFileManager = LogFileManager(context)
|
||||
}
|
||||
Reference in New Issue
Block a user