NotificationExecuteActionTask.java 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package com.owncloud.android.ui.asynctasks;
  2. import android.os.AsyncTask;
  3. import com.owncloud.android.lib.common.OwnCloudClient;
  4. import com.owncloud.android.lib.common.operations.RemoteOperation;
  5. import com.owncloud.android.lib.common.utils.Log_OC;
  6. import com.owncloud.android.lib.resources.notifications.models.Action;
  7. import com.owncloud.android.ui.activity.NotificationsActivity;
  8. import com.owncloud.android.ui.adapter.NotificationListAdapter;
  9. import org.apache.commons.httpclient.HttpMethod;
  10. import org.apache.commons.httpclient.HttpStatus;
  11. import org.apache.commons.httpclient.methods.DeleteMethod;
  12. import org.apache.commons.httpclient.methods.GetMethod;
  13. import org.apache.commons.httpclient.methods.PostMethod;
  14. import java.io.IOException;
  15. public class NotificationExecuteActionTask extends AsyncTask<Action, Void, Boolean> {
  16. private NotificationListAdapter.NotificationViewHolder holder;
  17. private OwnCloudClient client;
  18. private NotificationsActivity notificationsActivity;
  19. public NotificationExecuteActionTask(OwnCloudClient client, NotificationListAdapter.NotificationViewHolder holder,
  20. NotificationsActivity notificationsActivity) {
  21. this.client = client;
  22. this.holder = holder;
  23. this.notificationsActivity = notificationsActivity;
  24. }
  25. @Override
  26. protected Boolean doInBackground(Action... actions) {
  27. HttpMethod method;
  28. Action action = actions[0];
  29. switch (action.type) {
  30. case "GET":
  31. method = new GetMethod(action.link);
  32. break;
  33. case "POST":
  34. method = new PostMethod(action.link);
  35. break;
  36. case "DELETE":
  37. method = new DeleteMethod(action.link);
  38. break;
  39. default:
  40. // do nothing
  41. return false;
  42. }
  43. method.setRequestHeader(RemoteOperation.OCS_API_HEADER, RemoteOperation.OCS_API_HEADER_VALUE);
  44. int status;
  45. try {
  46. status = client.executeMethod(method);
  47. } catch (IOException e) {
  48. Log_OC.e(this, "Execution of notification action failed: " + e);
  49. return false;
  50. }
  51. return status == HttpStatus.SC_OK || status == HttpStatus.SC_ACCEPTED;
  52. }
  53. @Override
  54. protected void onPostExecute(Boolean isSuccess) {
  55. notificationsActivity.onActionCallback(isSuccess, holder);
  56. }
  57. }