NotificationExecuteActionTask.java 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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 org.apache.commons.httpclient.methods.PutMethod;
  15. import java.io.IOException;
  16. public class NotificationExecuteActionTask extends AsyncTask<Action, Void, Boolean> {
  17. private NotificationListAdapter.NotificationViewHolder holder;
  18. private OwnCloudClient client;
  19. private NotificationsActivity notificationsActivity;
  20. public NotificationExecuteActionTask(OwnCloudClient client, NotificationListAdapter.NotificationViewHolder holder,
  21. NotificationsActivity notificationsActivity) {
  22. this.client = client;
  23. this.holder = holder;
  24. this.notificationsActivity = notificationsActivity;
  25. }
  26. @Override
  27. protected Boolean doInBackground(Action... actions) {
  28. HttpMethod method;
  29. Action action = actions[0];
  30. switch (action.type) {
  31. case "GET":
  32. method = new GetMethod(action.link);
  33. break;
  34. case "POST":
  35. method = new PostMethod(action.link);
  36. break;
  37. case "DELETE":
  38. method = new DeleteMethod(action.link);
  39. break;
  40. case "PUT":
  41. method = new PutMethod(action.link);
  42. break;
  43. default:
  44. // do nothing
  45. return false;
  46. }
  47. method.setRequestHeader(RemoteOperation.OCS_API_HEADER, RemoteOperation.OCS_API_HEADER_VALUE);
  48. int status;
  49. try {
  50. status = client.executeMethod(method);
  51. } catch (IOException e) {
  52. Log_OC.e(this, "Execution of notification action failed: " + e);
  53. return false;
  54. }
  55. return status == HttpStatus.SC_OK || status == HttpStatus.SC_ACCEPTED;
  56. }
  57. @Override
  58. protected void onPostExecute(Boolean isSuccess) {
  59. notificationsActivity.onActionCallback(isSuccess, holder);
  60. }
  61. }