-
Notifications
You must be signed in to change notification settings - Fork 26
/
Copy pathDataModule
65 lines (53 loc) · 2.29 KB
/
DataModule
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.jordifierro.androidbase.presentation.dependency.module;
import android.content.SharedPreferences;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.GsonBuilder;
import com.jordifierro.androidbase.data.net.RestApi;
import com.jordifierro.androidbase.data.net.interceptor.HttpInterceptor;
import com.jordifierro.androidbase.data.repository.SessionDataRepository;
import com.jordifierro.androidbase.data.repository.UserDataRepository;
import com.jordifierro.androidbase.data.repository.VersionDataRepository;
import com.jordifierro.androidbase.domain.repository.SessionRepository;
import com.jordifierro.androidbase.domain.repository.UserRepository;
import com.jordifierro.androidbase.domain.repository.VersionRepository;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
@Module
public class DataModule {
@Provides
@Singleton
SessionRepository provideSessionRepository(SharedPreferences sharedPreferences) {
return new SessionDataRepository(sharedPreferences);
}
@Provides
@Singleton
RestApi provideRestApi() {
OkHttpClient client = new OkHttpClient().newBuilder()
.addInterceptor(new HttpInterceptor())
.build();
GsonConverterFactory factory = GsonConverterFactory.create(new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create());
return new Retrofit.Builder()
.baseUrl(RestApi.URL_BASE)
.addConverterFactory(factory)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(client)
.build()
.create(RestApi.class);
}
@Provides
@Singleton
UserRepository provideUserRepository(RestApi restApi) {
return new UserDataRepository(restApi);
}
@Provides
@Singleton
VersionRepository provideVersionRepository(RestApi restApi) {
return new VersionDataRepository(restApi);
}
}