Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
179 changes: 176 additions & 3 deletions src/main/java/com/uwetrottmann/trakt5/services/Sync.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

import com.uwetrottmann.trakt5.entities.BaseMovie;
import com.uwetrottmann.trakt5.entities.BaseShow;
import com.uwetrottmann.trakt5.entities.HistoryEntry;
import com.uwetrottmann.trakt5.entities.LastActivities;
import com.uwetrottmann.trakt5.entities.PlaybackResponse;
import com.uwetrottmann.trakt5.entities.RatedEpisode;
Expand All @@ -30,6 +31,7 @@
import com.uwetrottmann.trakt5.entities.WatchlistedSeason;
import com.uwetrottmann.trakt5.enums.Extended;
import com.uwetrottmann.trakt5.enums.RatingsFilter;
import org.threeten.bp.OffsetDateTime;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
Expand Down Expand Up @@ -121,7 +123,29 @@ Call<List<PlaybackResponse>> getPlayback(
/**
* <b>OAuth Required</b>
*
* <p> Returns all playbacks;
* <p> Returns playbacks for a given period;
*/
@GET("sync/playback")
Call<List<PlaybackResponse>> getPlaybackPeriod(
@Query("start_at") OffsetDateTime startAt,
@Query("end_at") OffsetDateTime endAt
);

/**
* <b>OAuth Required</b>
*
* <p>
* Returns playbacks since a date;
*/
@GET("sync/playback")
Call<List<PlaybackResponse>> getPlaybackSince(
@Query("start_at") OffsetDateTime startAt
);

/**
* <b>OAuth Required</b>
*
* <p> Returns all episodes playbacks;
*/
@GET("sync/playback/episodes")
Call<List<PlaybackResponse>> getPlaybackEpisodes(
Expand All @@ -131,11 +155,58 @@ Call<List<PlaybackResponse>> getPlaybackEpisodes(
/**
* <b>OAuth Required</b>
*
* <p> Returns all playbacks;
* <p>
* Returns episodes playbacks for a given period;
*/
@GET("sync/playback/episodes")
Call<List<PlaybackResponse>> getPlaybackEpisodesPeriod(
@Query("start_at") OffsetDateTime startAt,
@Query("end_at") OffsetDateTime endAt
);

/**
* <b>OAuth Required</b>
*
* <p>
* Returns episodes playbacks for a since a date;
*/
@GET("sync/playback/episodes")
Call<List<PlaybackResponse>> getPlaybackEpisodesSince(
@Query("limit") Integer limit,
@Query("start_at") OffsetDateTime startAt
);

/**
* <b>OAuth Required</b>
*
* <p>
* Returns all movies playbacks;
*/
@GET("sync/playback/movies")
Call<List<PlaybackResponse>> getPlaybackMovies(
@Query("limit") Integer limit
@Query("limit") Integer limit);

/**
* <b>OAuth Required</b>
*
* <p>
* Returns movies playbacks for a given period;
*/
@GET("sync/playback/movies")
Call<List<PlaybackResponse>> getPlaybackMoviesPeriod(
@Query("start_at") OffsetDateTime startAt,
@Query("end_at") OffsetDateTime endAt
);

/**
* <b>OAuth Required</b>
*
* <p>
* Returns movies playbacks since a date;
*/
@GET("sync/playback/movies")
Call<List<PlaybackResponse>> getPlaybackMoviesSince(
@Query("start_at") OffsetDateTime startAt
);

/**
Expand All @@ -160,6 +231,108 @@ Call<List<BaseShow>> watchedShows(
@Query(value = "extended", encoded = true) Extended extended
);

/**
* <b>OAuth Required</b>
*
* <p>
* Returns watch history;
*/
@GET("sync/history")
Call<List<HistoryEntry>> getWatchedHistory(
@Query("limit") Integer limit
);

/**
* <b>OAuth Required</b>
*
* <p>
* Returns watch history since a date;
*/
@GET("sync/history")
Call<List<HistoryEntry>> getWatchedHistorySince(
@Query("start_at") OffsetDateTime startAt
);

/**
* <b>OAuth Required</b>
*
* <p>
* Returns watch history for a given period;
*/
@GET("sync/history")
Call<List<HistoryEntry>> getWatchedHistoryPeriod(
@Query("start_at") OffsetDateTime startAt,
@Query("end_at") OffsetDateTime endAt
);

/**
* <b>OAuth Required</b>
*
* <p>
* Returns movies watch history;
*/
@GET("sync/history/movies")
Call<List<HistoryEntry>> getWatchedHistoryMovies(
@Query("limit") Integer limit
);

/**
* <b>OAuth Required</b>
*
* <p>
* Returns movies watch history since a date;
*/
@GET("sync/history/movies")
Call<List<HistoryEntry>> getWatchedHistoryMoviesSince(
@Query("start_at") OffsetDateTime startAt
);

/**
* <b>OAuth Required</b>
*
* <p>
* Returns movies watch history for a given period;
*/
@GET("sync/history/movies")
Call<List<HistoryEntry>> getWatchedHistoryMoviesPeriod(
@Query("start_at") OffsetDateTime startAt,
@Query("end_at") OffsetDateTime endAt
);

/**
* <b>OAuth Required</b>
*
* <p>
* Returns episodes watch history;
*/
@GET("sync/history/episodes")
Call<List<HistoryEntry>> getWatchedHistoryEpisodes(
@Query("limit") Integer limit
);

/**
* <b>OAuth Required</b>
*
* <p>
* Returns episodes watch history since a date;
*/
@GET("sync/history/episodes")
Call<List<HistoryEntry>> getWatchedHistoryEpisodesSince(
@Query("start_at") OffsetDateTime startAt
);

/**
* <b>OAuth Required</b>
*
* <p>
* Returns episodes watch history for a given period;
*/
@GET("sync/history/episodes")
Call<List<HistoryEntry>> getWatchedHistoryEpisodesPeriod(
@Query("start_at") OffsetDateTime startAt,
@Query("end_at") OffsetDateTime endAt
);

/**
* <b>OAuth Required</b>
*
Expand Down
139 changes: 139 additions & 0 deletions src/test/java/com/uwetrottmann/trakt5/services/SyncTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.uwetrottmann.trakt5.entities.BaseMovie;
import com.uwetrottmann.trakt5.entities.BaseShow;
import com.uwetrottmann.trakt5.entities.EpisodeIds;
import com.uwetrottmann.trakt5.entities.HistoryEntry;
import com.uwetrottmann.trakt5.entities.LastActivities;
import com.uwetrottmann.trakt5.entities.LastActivity;
import com.uwetrottmann.trakt5.entities.LastActivityAccount;
Expand Down Expand Up @@ -624,4 +625,142 @@ private ShowIds buildShowIds() {
return ShowIds.slug("the-walking-dead");
}

// Tests for new playback period/since methods

@Test
public void test_getPlaybackPeriod() throws IOException {
OffsetDateTime startAt = OffsetDateTime.now().minusDays(30);
OffsetDateTime endAt = OffsetDateTime.now();

List<PlaybackResponse> playbacks = executeCall(getTrakt().sync().getPlaybackPeriod(startAt, endAt));
assertThat(playbacks).isNotNull();
assertPlaybackResponses(playbacks);
}

@Test
public void test_getPlaybackSince() throws IOException {
OffsetDateTime startAt = OffsetDateTime.now().minusDays(30);

List<PlaybackResponse> playbacks = executeCall(getTrakt().sync().getPlaybackSince(startAt));
assertThat(playbacks).isNotNull();
assertPlaybackResponses(playbacks);
}

@Test
public void test_getPlaybackEpisodesPeriod() throws IOException {
OffsetDateTime startAt = OffsetDateTime.now().minusDays(30);
OffsetDateTime endAt = OffsetDateTime.now();

List<PlaybackResponse> playbacks = executeCall(getTrakt().sync().getPlaybackEpisodesPeriod(startAt, endAt));
assertThat(playbacks).isNotNull();
assertPlaybackResponses(playbacks);
}

@Test
public void test_getPlaybackEpisodesSince() throws IOException {
OffsetDateTime startAt = OffsetDateTime.now().minusDays(30);

List<PlaybackResponse> playbacks = executeCall(getTrakt().sync().getPlaybackEpisodesSince(10, startAt));
assertThat(playbacks).isNotNull();
assertPlaybackResponses(playbacks);
}

@Test
public void test_getPlaybackMoviesPeriod() throws IOException {
OffsetDateTime startAt = OffsetDateTime.now().minusDays(30);
OffsetDateTime endAt = OffsetDateTime.now();

List<PlaybackResponse> playbacks = executeCall(getTrakt().sync().getPlaybackMoviesPeriod(startAt, endAt));
assertThat(playbacks).isNotNull();
assertPlaybackResponses(playbacks);
}

@Test
public void test_getPlaybackMoviesSince() throws IOException {
OffsetDateTime startAt = OffsetDateTime.now().minusDays(30);

List<PlaybackResponse> playbacks = executeCall(getTrakt().sync().getPlaybackMoviesSince(startAt));
assertThat(playbacks).isNotNull();
assertPlaybackResponses(playbacks);
}

// Tests for new watched history period/since methods

@Test
public void test_getWatchedHistorySince() throws IOException {
OffsetDateTime startAt = OffsetDateTime.now().minusDays(30);

List<HistoryEntry> history = executeCall(getTrakt().sync().getWatchedHistorySince(startAt));
assertThat(history).isNotNull();
assertHistoryEntries(history);
}

@Test
public void test_getWatchedHistoryPeriod() throws IOException {
OffsetDateTime startAt = OffsetDateTime.now().minusDays(30);
OffsetDateTime endAt = OffsetDateTime.now();

List<HistoryEntry> history = executeCall(getTrakt().sync().getWatchedHistoryPeriod(startAt, endAt));
assertThat(history).isNotNull();
assertHistoryEntries(history);
}

@Test
public void test_getWatchedHistoryMoviesSince() throws IOException {
OffsetDateTime startAt = OffsetDateTime.now().minusDays(30);

List<HistoryEntry> history = executeCall(getTrakt().sync().getWatchedHistoryMoviesSince(startAt));
assertThat(history).isNotNull();
assertHistoryEntries(history);
}

@Test
public void test_getWatchedHistoryMoviesPeriod() throws IOException {
OffsetDateTime startAt = OffsetDateTime.now().minusDays(30);
OffsetDateTime endAt = OffsetDateTime.now();

List<HistoryEntry> history = executeCall(getTrakt().sync().getWatchedHistoryMoviesPeriod(startAt, endAt));
assertThat(history).isNotNull();
assertHistoryEntries(history);
}

@Test
public void test_getWatchedHistoryEpisodesSince() throws IOException {
OffsetDateTime startAt = OffsetDateTime.now().minusDays(30);

List<HistoryEntry> history = executeCall(getTrakt().sync().getWatchedHistoryEpisodesSince(startAt));
assertThat(history).isNotNull();
assertHistoryEntries(history);
}

@Test
public void test_getWatchedHistoryEpisodesPeriod() throws IOException {
OffsetDateTime startAt = OffsetDateTime.now().minusDays(30);
OffsetDateTime endAt = OffsetDateTime.now();

List<HistoryEntry> history = executeCall(getTrakt().sync().getWatchedHistoryEpisodesPeriod(startAt, endAt));
assertThat(history).isNotNull();
assertHistoryEntries(history);
}

// Helper methods for assertions

private void assertPlaybackResponses(List<PlaybackResponse> playbacks) {
for (PlaybackResponse playback : playbacks) {
assertThat(playback.id).isNotNull();
assertThat(playback.progress).isNotNull();
assertThat(playback.paused_at).isNotNull();
assertThat(playback.type).isNotNull();
}
}

private void assertHistoryEntries(List<HistoryEntry> history) {
for (HistoryEntry entry : history) {
assertThat(entry.id).isNotNull();
assertThat(entry.watched_at).isNotNull();
assertThat(entry.action).isNotNull();
assertThat(entry.type).isNotNull();
}
}

}