mirror of
https://github.com/NiciDieNase/chaosflix
synced 2025-02-17 05:28:24 +00:00
move Apis and Database to dedicated Factory Objects
This commit is contained in:
parent
f8af098b13
commit
fbf9ae983a
4 changed files with 65 additions and 39 deletions
|
@ -53,7 +53,7 @@ android {
|
|||
|
||||
|
||||
dependencies {
|
||||
implementation 'de.nicidienase.chaosflix:common:1.2.1-SNAPSHOT'
|
||||
implementation 'de.nicidienase.chaosflix:common:1.3-SNAPSHOT'
|
||||
|
||||
implementation 'com.android.support:multidex:1.0.2'
|
||||
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
package de.nicidienase.chaosflix.touch
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper
|
||||
import com.fasterxml.jackson.module.kotlin.KotlinModule
|
||||
import de.nicidienase.chaosflix.R
|
||||
import de.nicidienase.chaosflix.common.network.RecordingService
|
||||
import de.nicidienase.chaosflix.common.network.StreamingService
|
||||
import okhttp3.OkHttpClient
|
||||
import retrofit2.Retrofit
|
||||
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
|
||||
import retrofit2.converter.jackson.JacksonConverterFactory
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
object ApiFactory {
|
||||
|
||||
val recordingApi: RecordingService
|
||||
val streamingApi: StreamingService
|
||||
|
||||
init {
|
||||
|
||||
val res = ChaosflixApplication.APPLICATION_CONTEXT.resources
|
||||
val recordingUrl = res.getString(R.string.api_media_ccc_url)
|
||||
val streamingUrl = res.getString(R.string.streaming_media_ccc_url)
|
||||
|
||||
val client = OkHttpClient.Builder()
|
||||
.connectTimeout(60, TimeUnit.SECONDS)
|
||||
.readTimeout(60, TimeUnit.SECONDS)
|
||||
.build()
|
||||
val jacksonConverterFactory = JacksonConverterFactory.create(ObjectMapper().registerModule(KotlinModule()))
|
||||
val rxJava2CallAdapterFactory = RxJava2CallAdapterFactory.create()
|
||||
|
||||
val retrofitRecordings = Retrofit.Builder()
|
||||
.baseUrl(recordingUrl)
|
||||
.client(client)
|
||||
.addConverterFactory(jacksonConverterFactory)
|
||||
.addCallAdapterFactory(rxJava2CallAdapterFactory)
|
||||
.build()
|
||||
recordingApi = retrofitRecordings.create(RecordingService::class.java)
|
||||
|
||||
val retrofigStreaming = Retrofit.Builder()
|
||||
.baseUrl(streamingUrl)
|
||||
.client(client)
|
||||
.addConverterFactory(jacksonConverterFactory)
|
||||
.addCallAdapterFactory(rxJava2CallAdapterFactory)
|
||||
.build()
|
||||
streamingApi = retrofigStreaming.create(StreamingService::class.java)
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package de.nicidienase.chaosflix.touch
|
||||
|
||||
import android.arch.persistence.room.Room
|
||||
import de.nicidienase.chaosflix.common.entities.ChaosflixDatabase
|
||||
|
||||
object DatabaseFactory {
|
||||
val database = Room.databaseBuilder(
|
||||
ChaosflixApplication.APPLICATION_CONTEXT,
|
||||
ChaosflixDatabase::class.java, "mediaccc.de")
|
||||
.fallbackToDestructiveMigration()
|
||||
.build()
|
||||
}
|
|
@ -20,44 +20,9 @@ import java.util.concurrent.TimeUnit
|
|||
|
||||
object ViewModelFactory : ViewModelProvider.Factory {
|
||||
|
||||
val database: ChaosflixDatabase
|
||||
val recordingApi: RecordingService
|
||||
val streamingApi: StreamingService
|
||||
|
||||
init {
|
||||
val res = ChaosflixApplication.APPLICATION_CONTEXT.resources
|
||||
val recordingUrl = res.getString(R.string.api_media_ccc_url)
|
||||
val streamingUrl = res.getString(R.string.streaming_media_ccc_url)
|
||||
|
||||
val client = OkHttpClient.Builder()
|
||||
.connectTimeout(60, TimeUnit.SECONDS)
|
||||
.readTimeout(60, TimeUnit.SECONDS)
|
||||
.build()
|
||||
val jacksonConverterFactory = JacksonConverterFactory.create(ObjectMapper().registerModule(KotlinModule()))
|
||||
val rxJava2CallAdapterFactory = RxJava2CallAdapterFactory.create()
|
||||
|
||||
val retrofitRecordings = Retrofit.Builder()
|
||||
.baseUrl(recordingUrl)
|
||||
.client(client)
|
||||
.addConverterFactory(jacksonConverterFactory)
|
||||
.addCallAdapterFactory(rxJava2CallAdapterFactory)
|
||||
.build()
|
||||
recordingApi = retrofitRecordings.create(RecordingService::class.java)
|
||||
|
||||
val retrofigStreaming = Retrofit.Builder()
|
||||
.baseUrl(streamingUrl)
|
||||
.client(client)
|
||||
.addConverterFactory(jacksonConverterFactory)
|
||||
.addCallAdapterFactory(rxJava2CallAdapterFactory)
|
||||
.build()
|
||||
streamingApi = retrofigStreaming.create(StreamingService::class.java)
|
||||
|
||||
database = Room.databaseBuilder(
|
||||
ChaosflixApplication.APPLICATION_CONTEXT,
|
||||
ChaosflixDatabase::class.java, "mediaccc.de")
|
||||
.fallbackToDestructiveMigration()
|
||||
.build()
|
||||
}
|
||||
val database = DatabaseFactory.database
|
||||
val recordingApi = ApiFactory.recordingApi
|
||||
val streamingApi = ApiFactory.streamingApi
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
|
||||
|
|
Loading…
Add table
Reference in a new issue