use of com.uwetrottmann.seriesguide.backend.shows.model.SgCloudShowList in project SeriesGuide by UweTrottmann.
the class HexagonShowSync method downloadShows.
private boolean downloadShows(List<SgShow2CloudUpdate> updates, Set<Long> toUpdate, HashMap<Integer, SearchResult> toAdd, Map<Integer, Long> tmdbIdsToShowIds, boolean hasMergedShows, DateTime lastSyncTime) {
String cursor = null;
boolean hasMoreShows = true;
while (hasMoreShows) {
// abort if connection is lost
if (!AndroidUtils.isNetworkConnected(context)) {
Timber.e("download: no network connection");
return false;
}
List<SgCloudShow> shows;
try {
// get service each time to check if auth was removed
Shows showsService = hexagonTools.getShowsService();
if (showsService == null) {
return false;
}
// use default server limit
Shows.GetSgShows request = showsService.getSgShows();
if (hasMergedShows) {
// only get changed shows (otherwise returns all)
request.setUpdatedSince(lastSyncTime);
}
if (!TextUtils.isEmpty(cursor)) {
request.setCursor(cursor);
}
SgCloudShowList response = request.execute();
if (response == null) {
// If empty should send status 200 and empty list, so no body is a failure.
Timber.e("download: response was null");
return false;
}
shows = response.getShows();
// check for more items
if (response.getCursor() != null) {
cursor = response.getCursor();
} else {
hasMoreShows = false;
}
} catch (IOException | IllegalArgumentException e) {
// Note: JSON parser may throw IllegalArgumentException.
Errors.logAndReportHexagon("get shows", e);
return false;
}
if (shows == null || shows.size() == 0) {
// nothing to do here
break;
}
// append updates for received shows if there isn't one,
// or appends shows not added locally
appendShowUpdates(updates, toUpdate, toAdd, shows, tmdbIdsToShowIds, !hasMergedShows);
}
return true;
}
use of com.uwetrottmann.seriesguide.backend.shows.model.SgCloudShowList in project SeriesGuide by UweTrottmann.
the class HexagonShowSync method upload.
/**
* Uploads the given list of shows to Hexagon.
*/
public boolean upload(List<SgCloudShow> shows) {
if (shows.isEmpty()) {
Timber.d("upload: no shows to upload");
return true;
}
// Issues with some requests failing at Cloud due to
// EOFException: Unexpected end of ZLIB input stream
// Using info log to report sizes that are uploaded to determine
// if there is need for batching.
// https://github.com/UweTrottmann/SeriesGuide/issues/781
Timber.i("upload: %d shows", shows.size());
// wrap into helper object
SgCloudShowList showList = new SgCloudShowList();
showList.setShows(shows);
// upload shows
try {
// get service each time to check if auth was removed
Shows showsService = hexagonTools.getShowsService();
if (showsService == null) {
return false;
}
showsService.saveSgShows(showList).execute();
} catch (IOException e) {
Errors.logAndReportHexagon("save shows", e);
return false;
}
return true;
}
Aggregations