package org.yuttadhammo.buddydroid.interfaces; import java.net.URI; import java.util.HashMap; import java.util.Vector; import org.xmlrpc.android.XMLRPCClient; import org.xmlrpc.android.XMLRPCException; import org.yuttadhammo.buddydroid.BPSettingsActivity; import org.yuttadhammo.buddydroid.Buddypress; import org.yuttadhammo.buddydroid.R; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.AsyncTask; import android.os.Handler; import android.os.Message; import android.preference.PreferenceManager; import android.util.Log; import android.webkit.URLUtil; public class BPRequest { public static final int MSG_ERROR = 9999; public Vector<String> imageUrl = new Vector<String>(); Vector<String> selectedCategories = new Vector<String>(); private static SharedPreferences prefs; private static Context context; private static String protocol; private static int what; private static HashMap<String, Object> data; public static String error; public static String TAG = "BPRequest"; private static Handler handler; public BPRequest(Context c, Handler h, String _protocol, HashMap<String, Object> _data, int _what) { context = c; handler = h; data = _data; protocol = _protocol; what = _what; prefs = PreferenceManager.getDefaultSharedPreferences(context); } public void execute() { new getStreamTask().execute(this); } private static class getStreamTask extends AsyncTask<BPRequest, Boolean, Boolean> { private boolean success = false; private Object obj; @Override protected void onPostExecute(Boolean result) { Message msg = new Message(); if (success) { msg.arg1 = 0; msg.obj = obj; msg.what = what; } else { msg.arg1 = R.string.error; msg.obj = error; msg.what = MSG_ERROR; } handler.sendMessage(msg); } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected Boolean doInBackground(BPRequest... streams) { if(!isInternetOn()) { error = context.getString(R.string.checkSetupInternet); return false; } String password = prefs.getString("password", null); String username = prefs.getString("username", null); String website = BPWebsite.getWebsite(context); if(username == null || website == null || password == null) return false; Object[] params; params = new Object[] { username, password, data }; String uris = website+"index.php?bp_xmlrpc=true"; URI uri; try { uri = URI.create(uris); } catch(Exception e) { error = context.getString(R.string.websiteSyntaxError); return false; } XMLRPCClient client = new XMLRPCClient(uri, username, password); // not used try { obj = client.call(protocol, params); success = true; return true; } catch (final XMLRPCException e) { error = e.toString(); e.printStackTrace(); } return false; } } public static boolean isInternetOn() { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo netInfo = cm.getActiveNetworkInfo(); if (netInfo != null && netInfo.isConnectedOrConnecting()) { return true; } return false; } }