package org.wikipedia.gallery;
import org.json.JSONObject;
import org.mediawiki.api.json.Api;
import org.mediawiki.api.json.RequestBuilder;
import org.wikipedia.dataclient.WikiSite;
import org.wikipedia.page.PageQueryTask;
import org.wikipedia.page.PageTitle;
public class GalleryItemFetchTask extends PageQueryTask<GalleryItem> {
private static final String MAX_IMAGE_WIDTH = "1280";
private final boolean isVideo;
public GalleryItemFetchTask(Api api, WikiSite wiki, PageTitle title, boolean isVideo) {
super(api, wiki, title);
this.isVideo = isVideo;
}
@Override
public void buildQueryParams(RequestBuilder builder) {
if (isVideo) {
builder.param("prop", "videoinfo")
.param("viprop", "url|dimensions|mime|extmetadata|derivatives")
.param("viurlwidth", MAX_IMAGE_WIDTH);
} else {
builder.param("prop", "imageinfo")
.param("iiprop", "url|dimensions|mime|extmetadata")
.param("iiurlwidth", MAX_IMAGE_WIDTH);
}
}
@Override
public GalleryItem processPage(int pageId, PageTitle pageTitle, JSONObject pageData) throws Throwable {
return new GalleryItem(pageData);
}
}