package org.wikipedia.dataclient.mwapi.page; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import org.wikipedia.dataclient.page.PageClient; import org.wikipedia.dataclient.page.PageLead; import org.wikipedia.dataclient.page.PageRemaining; import org.wikipedia.dataclient.page.PageSummary; import okhttp3.CacheControl; import retrofit2.Call; /** * Retrofit web service client for MediaWiki PHP API. */ public class MwPageClient implements PageClient { @NonNull private final MwPageService service; public MwPageClient(@NonNull MwPageService service) { this.service = service; } @SuppressWarnings("unchecked") @NonNull @Override public Call<? extends PageSummary> summary(@NonNull String title) { return service.summary(title); } @SuppressWarnings("unchecked") @NonNull @Override public Call<? extends PageLead> lead(@Nullable CacheControl cacheControl, @NonNull CacheOption cacheOption, @NonNull String title, int leadThumbnailWidth, boolean noImages) { return service.lead(cacheControl == null ? null : cacheControl.toString(), optional(cacheOption.save()), title, leadThumbnailWidth, optional(noImages)); } @SuppressWarnings("unchecked") @NonNull @Override public Call<? extends PageRemaining> sections(@Nullable CacheControl cacheControl, @NonNull CacheOption cacheOption, @NonNull String title, boolean noImages) { return service.sections(cacheControl == null ? null : cacheControl.toString(), optional(cacheOption.save()), title, optional(noImages)); } /** * Optional boolean Retrofit parameter. * We don't want to send the query parameter at all when it's false since the presence of the * alone is enough to trigger the truthy behavior. */ private Boolean optional(boolean param) { if (param) { return true; } return null; } }