package com.uservoice.uservoicesdk.model; import com.uservoice.uservoicesdk.rest.Callback; import com.uservoice.uservoicesdk.rest.RestTask; import com.uservoice.uservoicesdk.rest.RestTaskCallback; import org.json.JSONException; import org.json.JSONObject; import java.util.HashMap; import java.util.List; import java.util.Map; public class Article extends BaseModel { private String title; private String html; private String topicName; public static void loadAll(final Callback<List<Article>> callback) { Map<String, String> params = new HashMap<String, String>(); params.put("sort", "ordered"); doGet(apiPath("/articles.json"), params, new RestTaskCallback(callback) { @Override public void onComplete(JSONObject result) throws JSONException { callback.onModel(deserializeList(result, "articles", Article.class)); } }); } public static void loadForTopic(int topicId, final Callback<List<Article>> callback) { Map<String, String> params = new HashMap<String, String>(); params.put("sort", "ordered"); doGet(apiPath("/topics/%d/articles.json", topicId), params, new RestTaskCallback(callback) { @Override public void onComplete(JSONObject result) throws JSONException { callback.onModel(deserializeList(result, "articles", Article.class)); } }); } public static RestTask loadInstantAnswers(String query, final Callback<List<BaseModel>> callback) { Map<String, String> params = new HashMap<String, String>(); params.put("per_page", "3"); params.put("forum_id", String.valueOf(getConfig().getForumId())); params.put("query", query); if (getConfig().getTopicId() != -1) { params.put("topic_id", String.valueOf(getConfig().getTopicId())); } return doGet(apiPath("/instant_answers/search.json"), params, new RestTaskCallback(callback) { @Override public void onComplete(JSONObject result) throws JSONException { callback.onModel(deserializeHeterogenousList(result, "instant_answers")); } }); } @Override public void load(JSONObject object) throws JSONException { super.load(object); title = getString(object, "question"); html = getHtml(object, "answer_html"); if (!object.isNull("topic")) { JSONObject topic = object.getJSONObject("topic"); topicName = topic.getString("name"); } } public String getTitle() { return title; } public String getHtml() { return html; } public String getTopicName() { return topicName; } }