Skip to content

Instantly share code, notes, and snippets.

View ch8n's full-sized avatar
💻
Always on to writing my next article.

Chetan Gupta ch8n

💻
Always on to writing my next article.
View GitHub Profile
@ch8n
ch8n / viewmodel_sample.kt
Created September 22, 2020 04:46
for medium article
class MovieDetailViewModel(val movieRespository : MovieRepository) : ViewModel() {
fun getMovieDetail(movieId : String): Single<MovieDetailResponse> {
...// some stuff
}
}
@ch8n
ch8n / app_resolver_2.kt
Created September 22, 2020 04:45
for medium article
object AppResolver {
...previous functions
// step 1, create provider for movie respository
fun provideMovieRepository()
= MovieRepository(??)
// step 2, movie repository has been already resolved above
fun provideMovieRepository(movieSource: MovieSource)
= MovieRepository(movieSource)
@ch8n
ch8n / repositoy_sample.kt
Created September 22, 2020 04:43
for medium article
class MovieRepository(private val movieSource : MovieSource) {
fun getMovieDetail(movieDetailRequest: MovieDetailRequest): Single<MovieDetailResponse> {
return movieSource.getMovie(movieDetailRequest.movieId)
}
}
@ch8n
ch8n / app_resolver.kt
Created September 22, 2020 04:41
for medium article
object AppResolver {
// step 1, we provide movie data source
fun provideMovieDataSource()
= MovieSource(??, ??)
// step 2 movie data source depends on movie service,
// we know we have already created a resolver function for
// API Manager inside NetworkResolver,
// so we won't create provider function for it again
fun provideMovieDataSource(apiManager : ApiManager)
@ch8n
ch8n / movie_source_sample.kt
Created September 22, 2020 04:39
for medium article
class MovieSource(val movieService : MovieService) {
fun getMovie(query : String): Single<MovieDetailResponse> {
return movieService.getMovie(query)
}
}
@ch8n
ch8n / network_resolver.kt
Created September 22, 2020 04:38
for medium article
object NetworkResolver {
// step 1, you first need to resolve Api Manager
fun provideApiManager() = ApiManager(??)
// step 2 Api manager requires retrofit Instance, provide it
// from parameter dependency
fun provideApiManager(retrofit: Retrofit) = ApiManager(retrofit)
// step 3 We haven't created a resolving function that provides
@ch8n
ch8n / api_manager_sample.kt
Last active September 22, 2020 04:35
for medium article
class ApiManager(private val retrofit : Retrofit) {
val movieService : MovieService by lazy {
retrofit.create(MovieService::class.java)
}
}
@ch8n
ch8n / test DI
Created September 18, 2020 17:11
package dev.ch8n.plumpic.ui.home.di
import androidx.lifecycle.ViewModelProviders
import dev.ch8n.plumpic.di.Injector
import dev.ch8n.plumpic.ui.home.HomeController
import dev.ch8n.plumpic.ui.home.HomeView
import dev.ch8n.plumpic.ui.home.HomeViewModel
import dev.ch8n.plumpic.utils.DispatcherProvider
class HomeDI(private val view: HomeView) {
class HomeController private constructor(
dispatcher: DispatcherProvider,
private val lifecycleOwner: LifecycleOwner,
private val view: HomeContract.View,
private val viewModel: HomeContract.ViewModel,
private val prefs: PlumPrefs
) : HomeContract.Controller, BaseController(dispatcher), CoroutineScope {
init {
jobTracker = Job()
@ch8n
ch8n / nginxproxy.md
Created July 22, 2020 06:06 — forked from soheilhy/nginxproxy.md
How to proxy web apps using nginx?

Virtual Hosts on nginx (CSC309)

When hosting our web applications, we often have one public IP address (i.e., an IP address visible to the outside world) using which we want to host multiple web apps. For example, one may wants to host three different web apps respectively for example1.com, example2.com, and example1.com/images on the same machine using a single IP address.

How can we do that? Well, the good news is Internet browsers