Skip to content
This repository was archived by the owner on Oct 27, 2024. It is now read-only.

Commit 3aea19c

Browse files
author
Ashwini Kumar
authored
Retrofit Integration with RxJava (#4)
* Retrofit Integration with RxJava * Updated gradle
1 parent dfcb981 commit 3aea19c

39 files changed

+432
-526
lines changed

app/build.gradle

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
apply plugin: 'com.android.application'
22
apply plugin: 'com.neenbedankt.android-apt'
3+
apply plugin: 'me.tatarka.retrolambda'
34

45
android {
56
compileSdkVersion 24
67
buildToolsVersion "23.0.3"
78

9+
810
defaultConfig {
911
applicationId "com.esoxjem.movieguide"
1012
minSdkVersion 16
1113
targetSdkVersion 24
1214
versionCode 1
1315
versionName "1.0"
16+
multiDexEnabled true
1417
}
1518
buildTypes {
1619
release {
@@ -26,6 +29,15 @@ android {
2629
packagingOptions {
2730
exclude 'META-INF/services/javax.annotation.processing.Processor'
2831
}
32+
33+
compileOptions {
34+
sourceCompatibility JavaVersion.VERSION_1_8
35+
targetCompatibility JavaVersion.VERSION_1_8
36+
}
37+
}
38+
39+
repositories {
40+
maven { url "https://jitpack.io" }
2941
}
3042

3143
dependencies {
@@ -36,23 +48,32 @@ dependencies {
3648
compile 'com.android.support:support-v4:24.1.1'
3749
compile 'com.android.support:support-annotations:24.1.1'
3850
compile 'com.android.support:palette-v7:24.1.1'
51+
compile 'com.android.support:multidex:1.0.1'
3952

4053
// Rx
4154
compile 'io.reactivex:rxandroid:1.0.1'
4255
compile 'io.reactivex:rxjava:1.1.0'
4356

4457
// Network
45-
compile 'com.squareup.okhttp:okhttp:2.6.0'
58+
compile 'com.squareup.okhttp3:okhttp:3.4.1'
4659

4760
// Glide
4861
compile 'com.github.bumptech.glide:glide:3.6.1'
49-
compile 'com.github.bumptech.glide:okhttp-integration:1.3.1'
62+
compile 'com.github.bumptech.glide:okhttp3-integration:1.4.0@aar'
5063

5164
// Other
5265
compile 'net.jcip:jcip-annotations:1.0'
66+
compile 'com.jakewharton:butterknife:7.0.1'
67+
compile 'com.github.franmontiel:PersistentCookieJar:v1.0.0'
68+
69+
// Square
5370
compile 'com.squareup.picasso:picasso:2.5.2'
5471
compile 'com.squareup.moshi:moshi:1.1.0'
55-
compile 'com.jakewharton:butterknife:7.0.1'
72+
compile 'com.squareup.retrofit2:retrofit:2.1.0'
73+
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
74+
compile 'com.squareup.retrofit2:converter-moshi:2.1.0'
75+
compile "com.squareup.okhttp3:okhttp:3.4.1"
76+
compile "com.squareup.okhttp3:logging-interceptor:3.4.1"
5677

5778
// Dependency Injection
5879
apt 'com.google.dagger:dagger-compiler:2.5'

app/proguard-rules.pro

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,17 @@
2626

2727
-keepclasseswithmembernames class * {
2828
@butterknife.* <methods>;
29-
}
29+
}
30+
31+
# Platform calls Class.forName on types which do not exist on Android to determine platform.
32+
-dontnote retrofit2.Platform
33+
# Platform used when running on RoboVM on iOS. Will not be used at runtime.
34+
-dontnote retrofit2.Platform$IOS$MainThreadExecutor
35+
# Platform used when running on Java 8 VMs. Will not be used at runtime.
36+
-dontwarn retrofit2.Platform$Java8
37+
# Retain generic type information for use by reflection by converters and adapters.
38+
-keepattributes Signature
39+
# Retain declared checked exceptions for use by a Proxy instance.
40+
-keepattributes Exceptions
41+
42+
-dontwarn java.lang.invoke.*

app/src/main/java/com/esoxjem/movieguide/Api.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,7 @@
55
*/
66
public class Api
77
{
8-
public static final String API_KEY = ""; // add your API key here
9-
public static final String GET_POPULAR_MOVIES = "http://api.themoviedb.org/3/discover/movie?language=en&sort_by=popularity.desc&api_key=" + API_KEY;
10-
public static final String GET_HIGHEST_RATED_MOVIES = "http://api.themoviedb.org/3/discover/movie?vote_count.gte=500&language=en&sort_by=vote_average.desc&api_key=" + API_KEY;
11-
public static final String GET_TRAILERS = "http://api.themoviedb.org/3/movie/%s/videos?api_key=" + API_KEY;
12-
public static final String GET_REVIEWS = "http://api.themoviedb.org/3/movie/%s/reviews?api_key=" + API_KEY;
8+
public static final String API_KEY = "eca1e53518090eb02f1180ab48607705"; // add your API key here
139
public static final String POSTER_PATH = "http://image.tmdb.org/t/p/w342";
1410
public static final String BACKDROP_PATH = "http://image.tmdb.org/t/p/w780";
1511
public static final String YOUTUBE_VIDEO_URL = "http://www.youtube.com/watch?v=%1$s";

app/src/main/java/com/esoxjem/movieguide/Constants.java renamed to app/src/main/java/com/esoxjem/movieguide/constants/Constants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.esoxjem.movieguide;
1+
package com.esoxjem.movieguide.constants;
22

33
/**
44
* @author arun

app/src/main/java/com/esoxjem/movieguide/details/DetailsModule.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
import com.esoxjem.movieguide.ActivityScope;
44
import com.esoxjem.movieguide.favorites.IFavoritesInteractor;
5-
import com.esoxjem.movieguide.network.RequestHandler;
65

76
import dagger.Module;
87
import dagger.Provides;
8+
import retrofit2.Retrofit;
99

1010
/**
1111
* @author pulkitkumar
@@ -28,18 +28,19 @@ MovieDetailsFragment provideMovieDetailsFragment()
2828
return movieDetailsFragment;
2929
}
3030

31+
3132
@Provides
3233
@ActivityScope
33-
IMovieDetailsInteractor provideInteractor(RequestHandler requestHandler)
34+
IMovieDetailsPresenter providePresenter(IMovieDetailsEndpoint movieDetailsEndpoint,
35+
IFavoritesInteractor favoritesInteractor)
3436
{
35-
return new MovieDetailsInteractor(requestHandler);
37+
return new MovieDetailsPresenter(movieDetailsEndpoint, favoritesInteractor);
3638
}
3739

3840
@Provides
3941
@ActivityScope
40-
IMovieDetailsPresenter providePresenter(IMovieDetailsInteractor detailsInteractor,
41-
IFavoritesInteractor favoritesInteractor)
42+
IMovieDetailsEndpoint provideMovieDetailsEndpoint(Retrofit retrofit)
4243
{
43-
return new MovieDetailsPresenter(detailsInteractor, favoritesInteractor);
44+
return retrofit.create(IMovieDetailsEndpoint.class);
4445
}
4546
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.esoxjem.movieguide.details;
2+
3+
import retrofit2.http.GET;
4+
import retrofit2.http.Path;
5+
import rx.Observable;
6+
7+
/**
8+
* @author Ashwini Kumar.
9+
*/
10+
11+
public interface IMovieDetailsEndpoint
12+
{
13+
14+
@GET("/3/movie/{id}/videos")
15+
Observable<VideoViewModel> getMovieTrailers(@Path("id") String id);
16+
17+
@GET("/3/movie/{id}/reviews")
18+
Observable<ReviewViewModel> getMovieReviews(@Path("id") String id);
19+
}

app/src/main/java/com/esoxjem/movieguide/details/IMovieDetailsInteractor.java

Lines changed: 0 additions & 17 deletions
This file was deleted.

app/src/main/java/com/esoxjem/movieguide/details/IMovieDetailsPresenter.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.esoxjem.movieguide.details;
22

3-
import com.esoxjem.movieguide.Movie;
4-
5-
import rx.Subscription;
3+
import com.esoxjem.movieguide.listing.Movie;
64

75
/**
86
* @author arun
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.esoxjem.movieguide.details;
22

3-
import com.esoxjem.movieguide.Movie;
4-
import com.esoxjem.movieguide.Review;
5-
import com.esoxjem.movieguide.Video;
3+
import com.esoxjem.movieguide.listing.Movie;
64

75
import java.util.List;
86

@@ -12,8 +10,12 @@
1210
public interface IMovieDetailsView
1311
{
1412
void showDetails(Movie movie);
13+
1514
void showTrailers(List<Video> trailers);
15+
1616
void showReviews(List<Review> reviews);
17+
1718
void showFavorited();
19+
1820
void showUnFavorited();
1921
}

app/src/main/java/com/esoxjem/movieguide/details/MovieDetailsActivity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
import android.view.MenuItem;
77

88
import com.esoxjem.movieguide.R;
9-
import com.esoxjem.movieguide.Constants;
10-
import com.esoxjem.movieguide.Movie;
9+
import com.esoxjem.movieguide.constants.Constants;
10+
import com.esoxjem.movieguide.listing.Movie;
1111

1212
public class MovieDetailsActivity extends AppCompatActivity
1313
{

app/src/main/java/com/esoxjem/movieguide/details/MovieDetailsFragment.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@
2121
import android.widget.TextView;
2222

2323
import com.bumptech.glide.Glide;
24+
import com.esoxjem.movieguide.Api;
2425
import com.esoxjem.movieguide.BaseApplication;
25-
import com.esoxjem.movieguide.Constants;
26-
import com.esoxjem.movieguide.Movie;
2726
import com.esoxjem.movieguide.R;
28-
import com.esoxjem.movieguide.Review;
29-
import com.esoxjem.movieguide.Video;
27+
import com.esoxjem.movieguide.constants.Constants;
28+
import com.esoxjem.movieguide.listing.Movie;
3029
import com.squareup.picasso.Picasso;
3130

3231
import java.util.List;
@@ -151,7 +150,7 @@ private void setToolbar()
151150
@Override
152151
public void showDetails(Movie movie)
153152
{
154-
Glide.with(getContext()).load(movie.getBackdropPath()).into(poster);
153+
Glide.with(getContext()).load(Api.BACKDROP_PATH + movie.getBackdropPath()).into(poster);
155154
title.setText(movie.getTitle());
156155
releaseDate.setText(String.format(getString(R.string.release_date), movie.getReleaseDate()));
157156
rating.setText(String.format(getString(R.string.rating), String.valueOf(movie.getVoteAverage())));

app/src/main/java/com/esoxjem/movieguide/details/MovieDetailsInteractor.java

Lines changed: 0 additions & 83 deletions
This file was deleted.

0 commit comments

Comments
 (0)