Loading app/src/main/java/foundation/e/apps/api/cleanapk/RetrofitModule.kt +35 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ package foundation.e.apps.api.cleanapk import android.os.Build import android.util.Log import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.dataformat.yaml.YAMLFactory import com.squareup.moshi.Moshi import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory import dagger.Module Loading @@ -27,6 +29,7 @@ import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import foundation.e.apps.api.exodus.ExodusTrackerApi import foundation.e.apps.api.fdroid.FdroidApiInterface import okhttp3.Cache import okhttp3.Interceptor import okhttp3.MediaType.Companion.toMediaTypeOrNull Loading @@ -35,8 +38,10 @@ import okhttp3.Protocol import okhttp3.Response import okhttp3.ResponseBody.Companion.toResponseBody import retrofit2.Retrofit import retrofit2.converter.jackson.JacksonConverterFactory import retrofit2.converter.moshi.MoshiConverterFactory import java.net.ConnectException import javax.inject.Named import javax.inject.Singleton @Module Loading Loading @@ -69,6 +74,25 @@ object RetrofitModule { .create(ExodusTrackerApi::class.java) } /** * The fdroid api returns results in .yaml format. * Hence we need a yaml convertor. * Convertor is being provided by [getYamlFactory]. */ @Singleton @Provides fun provideFdroidApi( okHttpClient: OkHttpClient, @Named("yamlFactory") yamlFactory: JacksonConverterFactory ): FdroidApiInterface { return Retrofit.Builder() .baseUrl(FdroidApiInterface.BASE_URL) .client(okHttpClient) .addConverterFactory(yamlFactory) .build() .create(FdroidApiInterface::class.java) } @Singleton @Provides fun getMoshi(): Moshi { Loading @@ -77,6 +101,17 @@ object RetrofitModule { .build() } /** * Used in above [provideFdroidApi]. * Reference: https://stackoverflow.com/a/69859687 */ @Singleton @Provides @Named("yamlFactory") fun getYamlFactory(): JacksonConverterFactory { return JacksonConverterFactory.create(ObjectMapper(YAMLFactory())) } @Singleton @Provides fun provideInterceptor(): Interceptor { Loading app/src/main/java/foundation/e/apps/api/database/AppDatabase.kt +4 −1 Original line number Diff line number Diff line Loading @@ -6,14 +6,17 @@ import androidx.room.Room import androidx.room.RoomDatabase import foundation.e.apps.api.exodus.Tracker import foundation.e.apps.api.exodus.TrackerDao import foundation.e.apps.api.fdroid.FdroidDao import foundation.e.apps.api.fdroid.models.FdroidEntity @Database( entities = [Tracker::class], entities = [Tracker::class, FdroidEntity::class], version = 1, exportSchema = false ) abstract class AppDatabase : RoomDatabase() { abstract fun trackerDao(): TrackerDao abstract fun fdroidDao(): FdroidDao companion object { private lateinit var INSTANCE: AppDatabase Loading app/src/main/java/foundation/e/apps/api/fdroid/FdroidApiInterface.kt +1 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ import retrofit2.http.Path /** * Interface for retrofit calls. * Created from [foundation.e.apps.api.cleanapk.RetrofitModule.provideFdroidApi]. */ interface FdroidApiInterface { Loading app/src/main/java/foundation/e/apps/api/fdroid/FdroidDao.kt +1 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ import foundation.e.apps.api.fdroid.models.FdroidEntity /** * Dao interface for storing Fdroid info in DB. * Created from [foundation.e.apps.di.DaoModule.getFdroidDao] */ @Dao interface FdroidDao { Loading app/src/main/java/foundation/e/apps/di/DaoModule.kt +6 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent import foundation.e.apps.api.database.AppDatabase import foundation.e.apps.api.exodus.TrackerDao import foundation.e.apps.api.fdroid.FdroidDao @InstallIn(SingletonComponent::class) @Module Loading @@ -16,4 +17,9 @@ object DaoModule { fun getTrackerDao(@ApplicationContext context: Context): TrackerDao { return AppDatabase.getInstance(context).trackerDao() } @Provides fun getFdroidDao(@ApplicationContext context: Context): FdroidDao { return AppDatabase.getInstance(context).fdroidDao() } } Loading
app/src/main/java/foundation/e/apps/api/cleanapk/RetrofitModule.kt +35 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ package foundation.e.apps.api.cleanapk import android.os.Build import android.util.Log import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.dataformat.yaml.YAMLFactory import com.squareup.moshi.Moshi import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory import dagger.Module Loading @@ -27,6 +29,7 @@ import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import foundation.e.apps.api.exodus.ExodusTrackerApi import foundation.e.apps.api.fdroid.FdroidApiInterface import okhttp3.Cache import okhttp3.Interceptor import okhttp3.MediaType.Companion.toMediaTypeOrNull Loading @@ -35,8 +38,10 @@ import okhttp3.Protocol import okhttp3.Response import okhttp3.ResponseBody.Companion.toResponseBody import retrofit2.Retrofit import retrofit2.converter.jackson.JacksonConverterFactory import retrofit2.converter.moshi.MoshiConverterFactory import java.net.ConnectException import javax.inject.Named import javax.inject.Singleton @Module Loading Loading @@ -69,6 +74,25 @@ object RetrofitModule { .create(ExodusTrackerApi::class.java) } /** * The fdroid api returns results in .yaml format. * Hence we need a yaml convertor. * Convertor is being provided by [getYamlFactory]. */ @Singleton @Provides fun provideFdroidApi( okHttpClient: OkHttpClient, @Named("yamlFactory") yamlFactory: JacksonConverterFactory ): FdroidApiInterface { return Retrofit.Builder() .baseUrl(FdroidApiInterface.BASE_URL) .client(okHttpClient) .addConverterFactory(yamlFactory) .build() .create(FdroidApiInterface::class.java) } @Singleton @Provides fun getMoshi(): Moshi { Loading @@ -77,6 +101,17 @@ object RetrofitModule { .build() } /** * Used in above [provideFdroidApi]. * Reference: https://stackoverflow.com/a/69859687 */ @Singleton @Provides @Named("yamlFactory") fun getYamlFactory(): JacksonConverterFactory { return JacksonConverterFactory.create(ObjectMapper(YAMLFactory())) } @Singleton @Provides fun provideInterceptor(): Interceptor { Loading
app/src/main/java/foundation/e/apps/api/database/AppDatabase.kt +4 −1 Original line number Diff line number Diff line Loading @@ -6,14 +6,17 @@ import androidx.room.Room import androidx.room.RoomDatabase import foundation.e.apps.api.exodus.Tracker import foundation.e.apps.api.exodus.TrackerDao import foundation.e.apps.api.fdroid.FdroidDao import foundation.e.apps.api.fdroid.models.FdroidEntity @Database( entities = [Tracker::class], entities = [Tracker::class, FdroidEntity::class], version = 1, exportSchema = false ) abstract class AppDatabase : RoomDatabase() { abstract fun trackerDao(): TrackerDao abstract fun fdroidDao(): FdroidDao companion object { private lateinit var INSTANCE: AppDatabase Loading
app/src/main/java/foundation/e/apps/api/fdroid/FdroidApiInterface.kt +1 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ import retrofit2.http.Path /** * Interface for retrofit calls. * Created from [foundation.e.apps.api.cleanapk.RetrofitModule.provideFdroidApi]. */ interface FdroidApiInterface { Loading
app/src/main/java/foundation/e/apps/api/fdroid/FdroidDao.kt +1 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ import foundation.e.apps.api.fdroid.models.FdroidEntity /** * Dao interface for storing Fdroid info in DB. * Created from [foundation.e.apps.di.DaoModule.getFdroidDao] */ @Dao interface FdroidDao { Loading
app/src/main/java/foundation/e/apps/di/DaoModule.kt +6 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent import foundation.e.apps.api.database.AppDatabase import foundation.e.apps.api.exodus.TrackerDao import foundation.e.apps.api.fdroid.FdroidDao @InstallIn(SingletonComponent::class) @Module Loading @@ -16,4 +17,9 @@ object DaoModule { fun getTrackerDao(@ApplicationContext context: Context): TrackerDao { return AppDatabase.getInstance(context).trackerDao() } @Provides fun getFdroidDao(@ApplicationContext context: Context): FdroidDao { return AppDatabase.getInstance(context).fdroidDao() } }