diff --git a/extensions/data-transfer/portability-data-transfer-rememberthemilk/src/main/java/org/dataportabilityproject/transfer/rememberthemilk/tasks/RememberTheMilkService.java b/extensions/data-transfer/portability-data-transfer-rememberthemilk/src/main/java/org/dataportabilityproject/transfer/rememberthemilk/tasks/RememberTheMilkService.java index e4fb7693c..3ce225e09 100644 --- a/extensions/data-transfer/portability-data-transfer-rememberthemilk/src/main/java/org/dataportabilityproject/transfer/rememberthemilk/tasks/RememberTheMilkService.java +++ b/extensions/data-transfer/portability-data-transfer-rememberthemilk/src/main/java/org/dataportabilityproject/transfer/rememberthemilk/tasks/RememberTheMilkService.java @@ -28,7 +28,11 @@ import com.google.common.collect.ImmutableMap; import java.io.IOException; import java.net.URL; +import java.time.Instant; +import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; +import javax.print.DocFlavor.STRING; import org.dataportabilityproject.transfer.rememberthemilk.model.tasks.GetListResponse; import org.dataportabilityproject.transfer.rememberthemilk.model.tasks.GetListsResponse; import org.dataportabilityproject.transfer.rememberthemilk.model.tasks.ListAddResponse; @@ -107,6 +111,20 @@ public void completeTask(String timeline, String listId, int seriesId, int taskI makeRequest(params, TaskUpdateResponse.class); } + public void setDueDate(String timeline, String listId, int seriesId, int taskId, Instant dueDate) + throws IOException { + // NB: does not set due time, merely due date + // TODO: address due times + Map params = new LinkedHashMap<>(); + params.put("method", RememberTheMilkMethods.TASKS_DUE_DATE.getMethodName()); + params.put("timeline", timeline); + params.put("list_id", listId); + params.put("taskseries_id", String.valueOf(seriesId)); + params.put("task_id", String.valueOf(taskId)); + params.put("due", dueDate.toString()); + makeRequest(params, TaskUpdateResponse.class); + } + public GetListResponse getList(String listId) throws IOException { Map params = ImmutableMap.of( @@ -149,6 +167,7 @@ private enum RememberTheMilkMethods { LISTS_ADD("rtm.lists.add"), TASKS_ADD("rtm.tasks.add"), TASKS_COMPLETE("rtm.tasks.complete"), + TASKS_DUE_DATE("rtm.tasks.setDueDate"), TASKS_GET_LIST("rtm.tasks.getList"), TIMELINES_CREATE("rtm.timelines.create"); diff --git a/extensions/data-transfer/portability-data-transfer-rememberthemilk/src/main/java/org/dataportabilityproject/transfer/rememberthemilk/tasks/RememberTheMilkTasksImporter.java b/extensions/data-transfer/portability-data-transfer-rememberthemilk/src/main/java/org/dataportabilityproject/transfer/rememberthemilk/tasks/RememberTheMilkTasksImporter.java index 77c63dcd0..99b3aeb51 100644 --- a/extensions/data-transfer/portability-data-transfer-rememberthemilk/src/main/java/org/dataportabilityproject/transfer/rememberthemilk/tasks/RememberTheMilkTasksImporter.java +++ b/extensions/data-transfer/portability-data-transfer-rememberthemilk/src/main/java/org/dataportabilityproject/transfer/rememberthemilk/tasks/RememberTheMilkTasksImporter.java @@ -98,6 +98,10 @@ public ImportResult importItem(UUID jobId, AuthData authData, TaskContainerResou // TODO: Address recurring events where some are completed and some are not service.completeTask(timeline, newList, addedTask.id, addedTask.tasks.get(0).id); } + if (task.getDueTime() != null) { + // TODO: Address recurring events with different due dates/times + service.setDueDate(timeline, newList, addedTask.id, addedTask.tasks.get(0).id, task.getDueTime()); + } } } } catch (Exception e) {