public static async Task <bool> RetryUpdateTask(IList <object> obj) { //const string message = "Whoops, I wasn't able to Update the Task, can you try again?"; var restRequest = new RestRequest(Method.PUT) { RequestFormat = DataFormat.Json, Resource = ((TaskItem)obj[0]).selfLink, Timeout = GTaskSettings.RequestTimeout }; // Set the updated date for formatting purposes ((TaskItem)obj[0]).updated = DateTime.UtcNow.ToString("yyyy-MM-dd'T'hh:mm:ss.00Z"); restRequest.AddBody(obj[0]); //Make the call var restResponse = await GTaskSettings.ExecuteRestTask(restRequest); try { if (restResponse.StatusCode == HttpStatusCode.OK) { //success return(true); } } catch (Exception)// e) { } return(false); }
public static async Task <bool> DeleteTask(string TaskListID, string Id) { //const string message = "Oops, I can't seem to Delete this Task, can you try again?"; var restClient = new RestClient { Authenticator = new OAuth2UriQueryParameterAuthenticator(GTaskSettings.AccessToken), BaseUrl = "https://www.googleapis.com/tasks/v1/lists/" + TaskListID + "/tasks/" + Id, Timeout = GTaskSettings.RequestTimeout }; var restRequest = new RestRequest(Method.DELETE) { Timeout = GTaskSettings.RequestTimeout }; //Make the call var restResponse = await GTaskSettings.ExecuteRestTask(restRequest, true, restClient); try { if (restResponse.StatusCode == HttpStatusCode.NoContent) { //success return(true); } } catch { } return(false); }
public static async Task <bool> RetryUpdateList(IList <object> obj) { var restRequest = new RestRequest(Method.PUT) { RequestFormat = DataFormat.Json, Resource = ((TaskListItem)obj[0]).selfLink, Timeout = GTaskSettings.RequestTimeout }; ((TaskListItem)obj[0]).updated = DateTime.UtcNow.ToString("yyyy-MM-dd'T'hh:mm:ss.00Z"); restRequest.AddBody(obj[0]); //Make the call var restResponse = await GTaskSettings.ExecuteRestTask(restRequest); try { if (restResponse.StatusCode == HttpStatusCode.OK) { //Success return(true); } } catch { } return(false); }
public static async Task <TaskListItem> RetryAddTaskList(IList <object> obj) { var restRequest = new RestRequest(Method.POST) { RequestFormat = DataFormat.Json, Resource = "https://www.googleapis.com/tasks/v1/users/@me/lists", Timeout = GTaskSettings.RequestTimeout }; var ignored = "{title:\"" + ((TaskListItem)obj[0]).title + "\"}"; restRequest.AddParameter("application/json", ignored, ParameterType.RequestBody); //Make the call var restResponse = await GTaskSettings.ExecuteRestTask(restRequest); try { if (restResponse.StatusCode == HttpStatusCode.OK) { if (obj.Count > 1) { var callback = obj[1] as Action <bool>; if (callback != null) { callback(true); } } var TaskListObject = JObject.Parse(restResponse.Content); var TaskList = new TaskListItem((string)TaskListObject.SelectToken("title"), (string)TaskListObject.SelectToken("id"), (string)TaskListObject.SelectToken("kind"), (string)TaskListObject.SelectToken("selfLink"), (string)TaskListObject.SelectToken("updated")); // Submit new task list to local storage too List <TaskListItem> list = await TaskListHelper.GetTaskListFromApplicationStorage(); TaskListItem newList = new TaskListItem((string)TaskListObject.SelectToken("title"), (string)TaskListObject.SelectToken("id"), (string)TaskListObject.SelectToken("kind"), (string)TaskListObject.SelectToken("selfLink"), (string)TaskListObject.SelectToken("updated")); // Add this new list to the local list list.Add(newList); // Submit the list to local storage await TaskListHelper.SubmitToLocalStorage(list); return(TaskList); } } catch { } return(null); }
public static async Task ClearCompletedTasks(string id) { const string message = "Hmmm... I am having a hard time Clearing your Completed Tasks, can you try again?"; var restRequest = new RestRequest(Method.POST) { Resource = String.Format("https://www.googleapis.com/tasks/v1/lists/" + id + "/clear"), Timeout = GTaskSettings.RequestTimeout }; var restResponse = await GTaskSettings.ExecuteRestTask(restRequest); try { if (restResponse.StatusCode == HttpStatusCode.NoContent) { //success - hide completed locally // Update the task locally List <TaskListItem> lists = await TaskListHelper.GetTaskListFromApplicationStorage(); foreach (TaskListItem list in lists.Where(x => x.id == id)) { foreach (TaskItem task in list.taskList.Where(x => x.status == "completed" && (x.hidden == null || x.hidden == "true"))) { task.hidden = "True"; task.updated = DateTime.UtcNow.ToString("yyyy-MM-dd'T'hh:mm:ss.00Z"); // DateTime.UtcNow.ToString(); } } // Resubmit the list to local storage await TaskListHelper.SubmitToLocalStorage(lists); } else { if (GTaskSettings.MsgError) { MessageBox.Show(message); } } } catch { if (GTaskSettings.MsgError) { MessageBox.Show(message); } } }
public static async Task <bool> UpdateTaskStatus(string parentListId, string currentTaskId, string due, bool isChecked) { //const string message = "Fiddlesticks.. I wasn't able to Update the Task, can you try again?"; var restRequest = new RestRequest(Method.PUT) { RequestFormat = DataFormat.Json, Resource = String.Format("https://www.googleapis.com/tasks/v1/lists/{0}/tasks/{1}", parentListId, currentTaskId), Timeout = GTaskSettings.RequestTimeout }; var check = (bool)isChecked ? "completed" : "needsAction"; var dueDate = ",due: \"" + due + "\""; var param = string.Empty; //Conditional on if there is a due date or not, if there isn't it sets it to No Due Date automatically, if there is we send it to retain the date an item was completed if (due != null) { param = "{id:\"" + currentTaskId + "\",status:\"" + check + "\"" + dueDate + "}"; } else { param = "{id:\"" + currentTaskId + "\",status:\"" + check + "\"}"; } restRequest.AddParameter("application/json", param, ParameterType.RequestBody); //Make the call var restResponse = await GTaskSettings.ExecuteRestTask(restRequest); try { if (restResponse.StatusCode == HttpStatusCode.OK) { //success return(true); } } catch { } return(false); }
public static async Task <string> MoveTask(string TaskListID, string Id, string PrevID) { //const string message = "I'm having issues moving this task, can you try again?"; var restRequest = new RestRequest(Method.POST) { Timeout = GTaskSettings.RequestTimeout }; if (PrevID == "") { restRequest.RequestFormat = DataFormat.Json; restRequest.Resource = String.Format("https://www.googleapis.com/tasks/v1/lists/" + TaskListID + "/tasks/" + Id + "/move?"); } else { restRequest.RequestFormat = DataFormat.Json; restRequest.Resource = String.Format("https://www.googleapis.com/tasks/v1/lists/" + TaskListID + "/tasks/" + Id + "/move?previous=" + PrevID); } restRequest.AddParameter("application/json", ParameterType.RequestBody); //Make the call var restResponse = await GTaskSettings.ExecuteRestTask(restRequest); try { if (restResponse.StatusCode == HttpStatusCode.OK) { // Get the new position from the response var m = JObject.Parse(restResponse.Content); string position = (string)m.SelectToken("position"); //success return(position); } } catch { } // Get the locally stored list List <TaskListItem> TaskListList = await TaskListHelper.GetTaskListFromApplicationStorage(false); // Check that the task list and tasks are available in local storage if (TaskListList.Where(x => x.id == TaskListID).Count() == 0 || TaskListList.Where(x => x.id == TaskListID).First().taskList.Where(x => x.id == Id).Count() == 0) { return(null); } if (string.IsNullOrEmpty(PrevID)) { // The item has been moved to the first position TaskListList.Where(x => x.id == TaskListID).First().taskList.Where(x => x.id == Id).First().position = "0"; TaskListList.Where(x => x.id == TaskListID).First().taskList.Where(x => x.id == Id).First().updated = DateTime.UtcNow.ToString("yyyy-MM-dd'T'hh:mm:ss.00Z"); // DateTime.UtcNow.ToString(); } else { // Check that the prev id item is available in local storage if (TaskListList.Where(x => x.id == TaskListID).First().taskList.Where(x => x.id == PrevID).Count() == 0) { return(null); } // get the position of the prev id item double position = double.Parse(TaskListList.Where(x => x.id == TaskListID).First().taskList.Where(x => x.id == PrevID).First().position); // Set the position of the item to 1+ the position of the previous item TaskListList.Where(x => x.id == TaskListID).First().taskList.Where(x => x.id == Id).First().position = (position + 1).ToString(); TaskListList.Where(x => x.id == TaskListID).First().taskList.Where(x => x.id == Id).First().updated = DateTime.UtcNow.ToString("yyyy-MM-dd'T'hh:mm:ss.00Z");// DateTime.UtcNow.ToString(); } //submit the task list to local storage await TaskListHelper.SubmitToLocalStorage(TaskListList); return(null); }
public static async Task <TaskItem> RetryAddTask(IList <object> obj) { //const string message = "Golly Gee, There was an error Creating the Task, can you try it again?"; var restRequest = new RestRequest(Method.POST) { RequestFormat = DataFormat.Json, Resource = String.Format("https://www.googleapis.com/tasks/v1/lists/{0}/tasks", obj[2]), Timeout = GTaskSettings.RequestTimeout }; string dueDate = string.Empty; if (!string.IsNullOrEmpty(((TaskItem)obj[0]).due)) { TaskItem t = ((TaskItem)obj[0]); dueDate = ",due: \"" + t.due + "\""; } var info = "{title:\"" + ((TaskItem)obj[0]).title + "\",notes:\"" + ((TaskItem)obj[0]).notes + "\"" + dueDate + "}"; info = info.Replace("\r", "\\n"); restRequest.AddParameter("application/json", info, ParameterType.RequestBody); //Make the call var restResponse = await GTaskSettings.ExecuteRestTask(restRequest); try { if (restResponse.StatusCode == HttpStatusCode.OK) { //Success var m = JObject.Parse(restResponse.Content); TaskItem newTask = new TaskItem((string)m.SelectToken("id"), (string)m.SelectToken("kind"), ((string)m.SelectToken("title")) == String.Empty ? "Empty" : (string) m.SelectToken("title"), ((TaskItem)obj[0]).notes, obj[2].ToString(), (string) m.SelectToken("position"), (string)m.SelectToken("updated"), (string)m.SelectToken("due"), (string)m.SelectToken("deleted"), (string)m.SelectToken("hidden"), (string)m.SelectToken("status"), (string) m.SelectToken("selfLink"), (string) m.SelectToken("completed"), (string) m.SelectToken("updated") ); // Submit task to local storage too List <TaskListItem> list = await TaskListHelper.GetTaskListFromApplicationStorage(); // Add the task to the list list.Where(x => x.id == obj[2].ToString()).First().taskList.Insert(0, newTask); // Resubmit the list to local storage await TaskListHelper.SubmitToLocalStorage(list); return(newTask); } } catch { } return(null); }
/// <summary> /// Load the task lists and all associated data from the api /// </summary> /// <param name="alertWhenNoConnection">Alert the user that we could not connect to the api</param> /// <returns>Boolean result</returns> public static async Task <List <TaskListItem> > LoadTaskDataFromApi(bool alertWhenNoConnection = false, string specificList = null) { try { await LoginHelper.RefreshTokenCodeAwait(true); var settings = IsolatedStorageSettings.ApplicationSettings; string url = "https://www.googleapis.com/tasks/v1/users/@me/lists?access_token=" + GTaskSettings.AccessToken; if (!string.IsNullOrEmpty(specificList)) { url = "https://www.googleapis.com/tasks/v1/users/@me/lists/" + specificList + "?access_token=" + GTaskSettings.AccessToken; } // Get the Task Lists #region Get Task Lists var restRequest = new RestRequest(Method.GET) { Resource = url, Timeout = GTaskSettings.RequestTimeout }; //Make the call var restResponse = await GTaskSettings.ExecuteRestTask(restRequest, false); //Store Lists var TaskListObject = JObject.Parse(restResponse.Content); // If the limit is exceeded then pop up a message, otherwise lets continue if (restResponse.Content.Contains("Limit Exceeded")) { MessageBox.Show("[1] Take a screenshot and send it to @MattLoflin or [email protected]\r\n \r\n" + restResponse.Content.ToString()); return(null); } List <TaskListItem> TaskListList = null; if (string.IsNullOrEmpty(specificList)) { TaskListList = TaskListObject["items"].Select(m => new TaskListItem((string)m.SelectToken("title"), (string)m.SelectToken("id"), (string)m.SelectToken("kind"), (string)m.SelectToken("selfLink"), (string)m.SelectToken("updated"))).ToList(); } else { TaskListList = new List <TaskListItem>(); TaskListList.Add(new TaskListItem((string)TaskListObject.SelectToken("title"), (string)TaskListObject.SelectToken("id"), (string)TaskListObject.SelectToken("kind"), (string)TaskListObject.SelectToken("selfLink"), (string)TaskListObject.SelectToken("updated"))); } //Check to see if pageToken exists //If so - iterate until empty var pageToken = string.Empty; if (TaskListObject["nextPageToken"] != null) { pageToken = TaskListObject["nextPageToken"].ToString(); } while (pageToken != string.Empty) { restRequest = new RestRequest(Method.GET) { Resource = "https://www.googleapis.com/tasks/v1/users/@me/lists?pageToken=" + pageToken + "&access_token=" + GTaskSettings.AccessToken, Timeout = GTaskSettings.RequestTimeout }; restResponse = await GTaskSettings.ExecuteRestTask(restRequest, false); TaskListObject = JObject.Parse(restResponse.Content); //Add the new list to the current list if (string.IsNullOrEmpty(specificList)) { TaskListList.AddRange(TaskListObject["items"].Select(m => new TaskListItem((string)m.SelectToken("title"), (string)m.SelectToken("id"), (string)m.SelectToken("kind"), (string)m.SelectToken("selfLink"), (string)m.SelectToken("updated")))); } else { TaskListList.Add(new TaskListItem((string)TaskListObject.SelectToken("title"), (string)TaskListObject.SelectToken("id"), (string)TaskListObject.SelectToken("kind"), (string)TaskListObject.SelectToken("selfLink"), (string)TaskListObject.SelectToken("updated"))); } //reset the pageToken pageToken = string.Empty; if (TaskListObject["nextPageToken"] != null) { pageToken = TaskListObject["nextPageToken"].ToString(); } } #endregion // Get the Task Items #region Get Task Items // Loop through the task list list and get the tasks for each list foreach (TaskListItem list in TaskListList) { // Instantiate the task list list.taskList = new List <TaskItem>(); //If user wants to see Hidden (Completed) tasks, then display them. Else return current list restRequest.Resource = "https://www.googleapis.com/tasks/v1/lists/" + list.id + "/tasks?access_token=" + GTaskSettings.AccessToken; if (GTaskSettings.HideCompleted == false) { restRequest.Resource = "https://www.googleapis.com/tasks/v1/lists/" + list.id + "/tasks?showHidden=True&access_token=" + GTaskSettings.AccessToken; } //Make the call restResponse = await GTaskSettings.ExecuteRestTask(restRequest, false); var TaskObject = JObject.Parse(restResponse.Content); if (!restResponse.Content.Contains("Limit Exceeded")) { if (TaskObject != null && TaskObject["items"] != null) { list.taskList = TaskObject["items"].Select(m => new TaskItem((string)m.SelectToken("id"), (string)m.SelectToken("kind"), ((string)m.SelectToken("title")) == String.Empty ? "Empty" : (string) m.SelectToken("title"), (string)m.SelectToken("notes"), list.id, (string) m.SelectToken("position"), (string)m.SelectToken("update"), (string)m.SelectToken("due"), (string)m.SelectToken("deleted"), (string)m.SelectToken("hidden"), (string)m.SelectToken("status"), (string) m.SelectToken("selfLink"), (string) m.SelectToken("completed"), (string) m.SelectToken("updated") )).ToList(); } //Check to see if pageToken exists //If so - iterate until empty pageToken = string.Empty; if (TaskObject["nextPageToken"] != null) { pageToken = TaskObject["nextPageToken"].ToString(); } while (pageToken != string.Empty) { //If user wants to see Hidden (Completed) tasks, then display them. Else return current list restRequest.Resource = "https://www.googleapis.com/tasks/v1/lists/" + list.id + "/tasks?pageToken=" + pageToken + "&access_token=" + GTaskSettings.AccessToken; if (GTaskSettings.HideCompleted == false) { restRequest.Resource = "https://www.googleapis.com/tasks/v1/lists/" + list.id + "/tasks?pageToken=" + pageToken + "&showHidden=True&access_token=" + GTaskSettings.AccessToken; } restResponse = await GTaskSettings.ExecuteRestTask(restRequest, false); TaskObject = JObject.Parse(restResponse.Content); //Add the new list to the current list list.taskList.AddRange(TaskObject["items"].Select( m => new TaskItem((string)m.SelectToken("id"), (string)m.SelectToken("kind"), ((string)m.SelectToken("title")) == String.Empty ? "Empty" : (string) m.SelectToken("title"), (string)m.SelectToken("notes"), (string)m.SelectToken("parent"), (string) m.SelectToken("position"), (string)m.SelectToken("update"), (string)m.SelectToken("due"), (string)m.SelectToken("deleted"), (string)m.SelectToken("hidden"), (string)m.SelectToken("status"), (string) m.SelectToken("selfLink"), (string) m.SelectToken("completed"), (string) m.SelectToken("updated") )).ToList()); //reset the pageToken pageToken = string.Empty; if (TaskObject["nextPageToken"] != null) { pageToken = TaskObject["nextPageToken"].ToString(); } } } else { MessageBox.Show("[2] Take a screenshot and send it to @MattLoflin or [email protected]\r\n \r\n" + restResponse.Content.ToString()); } } #endregion return(TaskListList); } catch (Exception e) { // Check if an error was returned indicated that we couldnt connect to the api if (alertWhenNoConnection && e.ToString().Contains("Error reading JObject from JsonReader")) { var googError = MessageBox.Show("Google is having intermittent connectivity issues, please try again in a couple minutes.", "Google Connection Issues", MessageBoxButton.OK); } // Return false return(null); // There was an issue getting the data. // There might not have been an internet connection so ignore the error // This can be handled more delicately in the future } }