package com.buddycloud.model; import java.util.ArrayList; import java.util.List; import org.apache.http.entity.StringEntity; import org.json.JSONArray; import org.json.JSONObject; import android.content.Context; import com.buddycloud.http.BuddycloudHTTPHelper; import com.buddycloud.preferences.Preferences; public class PendingSubscriptionsModel extends AbstractModel<JSONArray, JSONArray, String> { private static final String ENDPOINT_SUFIX = "/approve"; private static final String POSTS_NODE = "/posts"; private static final String ENDPOINT = "/subscribers"; private static PendingSubscriptionsModel instance; private PendingSubscriptionsModel() {} public static PendingSubscriptionsModel getInstance() { if (instance == null) { instance = new PendingSubscriptionsModel(); } return instance; } public void getFromServer(final Context context, final ModelCallback<JSONArray> callback, String... p) { String channelJid = p[0]; BuddycloudHTTPHelper.getArray(url(channelJid, context), context, new ModelCallback<JSONArray>() { @Override public void success(JSONArray response) { List<String> jids = new ArrayList<String>(); for (int i = 0; i < response.length(); i++) { JSONObject subscription = response.optJSONObject(i); if(subscription.optString("subscription").equals( SubscribedChannelsModel.SUBSCRIPTION_PENDING)) { jids.add(subscription.optString("jid")); } } callback.success(new JSONArray(jids)); } @Override public void error(Throwable throwable) { callback.error(throwable); } }); } private static String url(String channelJid, Context context) { String apiAddress = Preferences.getPreference(context, Preferences.API_ADDRESS); return apiAddress + "/" + channelJid + ENDPOINT + POSTS_NODE + ENDPOINT_SUFIX; } @Override public void save(Context context, JSONArray object, final ModelCallback<JSONArray> callback, String... p) { try { StringEntity requestEntity = new StringEntity(object.toString(), "UTF-8"); requestEntity.setContentType("application/json"); BuddycloudHTTPHelper.post(url(p[0], context), true, false, requestEntity, context, new ModelCallback<JSONObject>() { @Override public void success(final JSONObject subscription) { callback.success(null); } @Override public void error(Throwable throwable) { callback.error(throwable); } }); } catch (Exception e) { callback.error(e); } } @Override public JSONArray getFromCache(Context context, String... p) { // TODO Auto-generated method stub return null; } @Override public void fill(Context context, ModelCallback<Void> callback, String... p) { // TODO Auto-generated method stub } @Override public void delete(Context context, ModelCallback<Void> callback, String... p) { // TODO Auto-generated method stub } }