package org.goodev.discourse;
import android.app.IntentService;
import android.content.Intent;
import android.os.ResultReceiver;
import android.util.SparseArray;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.JsonObjectRequest;
import org.goodev.discourse.api.Api;
import org.goodev.discourse.api.JsonObjectListener;
import org.goodev.discourse.api.MyErrorListener;
import org.goodev.discourse.utils.Utils;
import org.json.JSONObject;
public class Service extends IntentService {
private final SparseArray<ResultReceiver> mCallbacks = new SparseArray<ResultReceiver>();
public Service() {
super("DiscourseService");
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
protected void onHandleIntent(Intent intent) {
final int type = intent.getIntExtra(Utils.EXTRA_TYPE, -1);
if (type == -1) {
return;
}
final String url = intent.getStringExtra(Utils.EXTRA_URL);
ResultReceiver rr = intent.getParcelableExtra(Utils.EXTRA_CALLBACK);
mCallbacks.put(type, rr);
Listener<JSONObject> listener = new JsonObjectListener(type, url, mCallbacks);
ErrorListener errorListener = new MyErrorListener(type, url, mCallbacks);
String requestUrl = null;
switch (type) {
case Api.TYPE_LATEST:
requestUrl = url + Api.LATEST;
break;
case Api.TYPE_CATEGORIES:
requestUrl = url + Api.CATEGORIES;
break;
}
JsonObjectRequest request = new JsonObjectRequest(requestUrl, null, listener, errorListener);
App.getRequestQueue().add(request);
}
// private ErrorListener getCateogriesErrorListener(int type, String url) {
// ErrorListener listener = new MyErrorListener(type, url, mCallbacks);
// return listener;
// }
//
// private Listener<JSONObject> getCateogriesListener(int type, String url) {
// Listener<JSONObject> listener = new JsonObjectListener(type) {
//
// @Override
// public void onResponse(JSONObject response) {
// Api.parseCategories(response);
// ResultReceiver rr = mCallbacks.get(mType);
// if (rr != null) {
// rr.send(Activity.RESULT_OK, null);
// mCallbacks.delete(mType);
// }
// }
//
// };
// return listener;
// }
//
// private ErrorListener getLatestErrorListener(int type, String url) {
// return new MyErrorListener(type, url, mCallbacks);
// }
//
// private Listener<JSONObject> getLatestListener(int type, String url) {
// Listener<JSONObject> listener = new JsonObjectListener(type) {
//
// @Override
// public void onResponse(JSONObject response) {
// Api.parseCategories(response);
// ResultReceiver rr = mCallbacks.get(mType);
// if (rr != null) {
// rr.send(Activity.RESULT_OK, null);
// mCallbacks.delete(mType);
// }
// }
// };
// return listener;
// }
}