public void CreateTask(Task task, Action<TaskResult> callback) { ThreadStart(method: () => { var clone = task.Clone(); Tasks.Add(clone); callback(new TaskResult(new Task[] { clone })); }); }
void ITaskRepository.DeleteTask(Task task, Action<TaskResult> callback) { string uri = _BaseAddress + "tasks/" + task.Key; var request = WebRequest.CreateHttp(uri); request.Method = "DELETE"; request.ContentType = "application/json"; request.BeginGetResponse(result => { var response = (HttpWebResponse)request.EndGetResponse(result); if (response.StatusCode != HttpStatusCode.OK) { var error = new WebException(response.StatusDescription); callback(new TaskResult(new Task[0], error: error)); } else { callback(new TaskResult(new Task[] { task.Clone() })); } }, null); }
void ITaskRepository.UpdateTask(Task task, Action<TaskResult> callback) { string uri = _BaseAddress + "tasks/" + task.Key; byte[] bytes = Encoding.UTF8.GetBytes(task.ToJsonString()); var request = WebRequest.CreateHttp(uri); request.Method = "PUT"; request.ContentType = "application/json"; request.ContentLength = bytes.Length; request.BeginGetRequestStream(result => { using (var stream = request.EndGetRequestStream(result)) { stream.Write(bytes, 0, bytes.Length); } request.BeginGetResponse(result2 => { var response = (HttpWebResponse)request.EndGetResponse(result2); if (response.StatusCode != HttpStatusCode.OK) { var error = new WebException(response.StatusDescription); callback(new TaskResult(new Task[0], error: error)); } else { callback(new TaskResult(new Task[] { task.Clone() })); } }, null); }, null); }