package org.wheelmap.android.async; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.mime.MultipartEntity; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import org.wheelmap.android.fragment.POIDetailFragment; import org.wheelmap.android.modules.ICredentials; import org.wheelmap.android.modules.UserCredentials; import org.wheelmap.android.online.BuildConfig; import org.wheelmap.android.online.R; import android.app.Application; import android.app.ProgressDialog; import android.database.Cursor; import android.os.AsyncTask; import android.support.v4.app.Fragment; import android.util.Log; import android.widget.Toast; import java.io.File; public class UploadPhotoTask extends AsyncTask<File, Void, Boolean> { private static final String TAG = UploadPhotoTask.class.getSimpleName(); ProgressDialog progress; long wmID; Application mContext; Fragment mFragment; Cursor mCursor; public UploadPhotoTask(Cursor cursor, Fragment fragment, Application context, ProgressDialog d, long wmID) { mContext = context; this.wmID = wmID; progress = d; mCursor = cursor; mFragment = fragment; } @Override protected void onPreExecute() { super.onPreExecute(); if (progress != null && !progress.isShowing()) { progress.show(); } } @Override protected Boolean doInBackground(File... params) { String server = BuildConfig.API_BASE_URL; ICredentials credentials = new UserCredentials(mContext); String url = server + "/api/nodes/" + wmID + "/photos?api_key=" + credentials.getApiKey(); Log.d(TAG, url); File image = params[0]; HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); try { MultipartEntity entity = new MultipartEntity(); entity.addPart("photo", new FileBody(image)); httppost.setEntity(entity); HttpResponse response = httpclient.execute(httppost); String result = EntityUtils.toString(response.getEntity()); Log.d(TAG, result + ""); return true; } catch (Exception e) { e.printStackTrace(); Log.d(TAG, e.getLocalizedMessage()); return false; } } @Override protected void onPostExecute(Boolean b) { super.onPostExecute(b); if (progress != null) { progress.dismiss(); } if (!b) { Toast.makeText(mContext, R.string.photo_upload_failed, Toast.LENGTH_LONG).show(); } else { Toast.makeText(mContext, R.string.photo_upload_successfully, Toast.LENGTH_LONG).show(); if (mFragment != null && mFragment.isAdded() && mCursor != null && mCursor.getCount() > 0) { ((POIDetailFragment) mFragment).reloadData(); } } } }