public async Task SynchroniseAsync(CommitSynchronisationCriteria criteria, Action <CommitSynchronisationResult> onComplete, Action onError) { HttpResponseMessage response; try { response = await synchronisationHttpClient.GetCommitsAsync(serverUriProvider.ServerUri, criteria.ClientId, criteria.PullCommitsFrom.Ticks); } catch (WebException) { onError(); return; } if (!response.IsSuccessStatusCode) { onError(); return; } CommitSynchronisation pullCommits = await response.ReadContentAsCommitSynchronisationAsync(); DateTime lastPullCommitDate = criteria.PullCommitsFrom; pullCommits.Commits.ForEach(commit => { synchronisableCommitSynchroniser.SynchroniseCommit(commit); lastPullCommitDate = commit.CreatedOn; }); DateTime lastPushCommitDate = criteria.PullCommitsFrom; try { CommitSynchronisation pushCommits = synchronisableCommitBuilder.Build( criteria.ClientId, criteria.PullCommitsFrom, commit => commit.OriginatesOnMachineNamed(localMachine.GetName())); if (pushCommits.Commits.Any()) { lastPushCommitDate = pushCommits.Commits.Last().CreatedOn; } response = await synchronisationHttpClient.PostCommitsAsync(serverUriProvider.ServerUri, pushCommits); } catch (WebException) { onError(); return; } if (!response.IsSuccessStatusCode) { onError(); return; } onComplete(new CommitSynchronisationResult(lastPullCommitDate, lastPushCommitDate)); }
public Task <HttpResponseMessage> PostCommitsAsync(Uri serverUri, CommitSynchronisation content) { LastAsyncCallServerUri = serverUri; LastPostCommitsAsyncCallContent = content; var response = new HttpResponseMessage { StatusCode = StatusToReturn }; return(Task.FromResult(response)); }
public async Task <IHttpActionResult> PostAsync(CommitSynchronisation toPost) { await commandHandler.Handle(new CommitSynchronisableCommits { Synchronisation = toPost }); return(Ok()); }
public async Task <HttpResponseMessage> PostCommitsAsync(Uri serverUri, CommitSynchronisation content) { return(await httpClientFactory.Create().PostAsJsonAsync(PostEventsSynchronisationUri.Parse(serverUri), content)); }