package de.vanmar.android.yarrn.requests;
import android.app.Application;
import com.google.gson.Gson;
import org.scribe.model.OAuthRequest;
import org.scribe.model.Verb;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import de.vanmar.android.yarrn.R;
import de.vanmar.android.yarrn.YarrnPrefs_;
import de.vanmar.android.yarrn.ravelry.dts.FavoritesResult;
public class ListFavoritesRequest extends AbstractRavelryGetRequest<FavoritesResult> {
private int page;
private int pageSize;
private String searchQuery;
private SearchOption searchOption;
public enum SearchOption {
TAGS, ALL
}
public ListFavoritesRequest(Application application, YarrnPrefs_ prefs, int page, int pageSize, String searchQuery, SearchOption searchOption) {
super(FavoritesResult.class, application, prefs);
this.page = page;
this.pageSize = pageSize;
try {
this.searchQuery = URLEncoder.encode(searchQuery, "utf-8");
} catch (UnsupportedEncodingException e) {
this.searchQuery = "";
}
this.searchOption = searchOption;
}
protected FavoritesResult parseResult(String responseBody) {
return new Gson().fromJson(responseBody, FavoritesResult.class);
}
protected OAuthRequest getRequest() {
String searchParam = "";
if (searchOption != null) {
switch (searchOption) {
case TAGS:
searchParam = "tag=" + searchQuery;
break;
case ALL:
searchParam = "deep_search=true&query=" + searchQuery;
break;
}
}
return new OAuthRequest(Verb.GET,
application.getString(R.string.ravelry_url) + String.format("/people/%s/favorites/list.json?types=project%%20pattern&page=%s&page_size=%s&%s",
prefs.username().get(), page, pageSize, searchParam));
}
}