|
6 | 6 | import com.ackee.versioupdatehandler.model.VersionsConfiguration; |
7 | 7 | import com.google.gson.FieldNamingPolicy; |
8 | 8 | import com.google.gson.GsonBuilder; |
| 9 | +import com.google.gson.JsonObject; |
9 | 10 |
|
10 | 11 | import okhttp3.OkHttpClient; |
11 | 12 | import okhttp3.logging.HttpLoggingInterceptor; |
|
16 | 17 | import rx.Single; |
17 | 18 | import rx.functions.Func1; |
18 | 19 |
|
| 20 | +import static com.ackee.versionupdatehandler.RestVersionFetcher.ApiDescription.api; |
| 21 | + |
19 | 22 | /** |
20 | 23 | * Class that fetches version configuration from rest api |
21 | 24 | * <p> |
|
26 | 29 | **/ |
27 | 30 | public class RestVersionFetcher implements VersionFetcher { |
28 | 31 | public static final String TAG = RestVersionFetcher.class.getName(); |
29 | | - private ApiDescription api = null; |
30 | 32 |
|
31 | 33 | interface ApiDescription { |
32 | 34 | @GET("app_version") |
33 | | - public Single<BasicVersionsConfiguration> getVersions(); |
| 35 | + public Single<JsonObject> getVersions(); |
34 | 36 | } |
35 | 37 |
|
| 38 | + public static final String MINIMAL_VERSION = "minimal_version_android"; |
| 39 | + public static final String CURRENT_VERSION = "current_version_android"; |
| 40 | + |
| 41 | + String minimalAttributeName; |
| 42 | + String currentAttributeName; |
36 | 43 | String baseUrl; |
37 | 44 |
|
| 45 | + private ApiDescription api = null; |
| 46 | + |
38 | 47 | public RestVersionFetcher(String baseUrl) { |
| 48 | + this(baseUrl, MINIMAL_VERSION, CURRENT_VERSION); |
| 49 | + } |
| 50 | + |
| 51 | + public RestVersionFetcher(String baseUrl, String currentAttributeName, String minimalAttributeName) { |
39 | 52 | this.baseUrl = baseUrl; |
| 53 | + this.currentAttributeName = currentAttributeName; |
| 54 | + this.minimalAttributeName = minimalAttributeName; |
40 | 55 | } |
41 | 56 |
|
42 | 57 | @Override |
43 | 58 | public Single<VersionsConfiguration> fetch() { |
44 | 59 | return getApi() |
45 | 60 | .getVersions() |
46 | 61 | // Single<BasicVersionsConfiguration> is not subtype of Single<VersionsConfiguration> :( |
47 | | - .map(new Func1<BasicVersionsConfiguration, VersionsConfiguration>() { |
| 62 | + .map(new Func1<JsonObject, VersionsConfiguration>() { |
48 | 63 | @Override |
49 | | - public VersionsConfiguration call(BasicVersionsConfiguration basicVersionsConfiguration) { |
50 | | - return basicVersionsConfiguration; |
| 64 | + public VersionsConfiguration call(JsonObject json) { |
| 65 | + return new BasicVersionsConfiguration(json.get(minimalAttributeName).getAsLong(), json.get(currentAttributeName).getAsLong()); |
51 | 66 | } |
52 | 67 | }) |
53 | 68 | .onErrorResumeNext(new Func1<Throwable, Single<? extends VersionsConfiguration>>() { |
|
0 commit comments