public override async Task<SynchronizationReport> PerformAsync(string destination)
{
AssertLocalFileExistsAndIsNotConflicted(FileMetadata);
var conflict = CheckConflictWithDestination(FileMetadata, destinationMetadata, ServerInfo.Url);
if (conflict != null)
return await ApplyConflictOnDestinationAsync(conflict, destination, ServerInfo.Url, log);
var request =
(HttpWebRequest)
WebRequest.Create(destination + "/synchronization/updatemetadata?fileName=" + Uri.EscapeDataString(FileName));
request.Method = "POST";
request.ContentLength = 0;
request.AddHeaders(FileMetadata);
request.Headers[SyncingMultipartConstants.SourceServerInfo] = ServerInfo.AsJson();
try
{
using (var response = await request.GetResponseAsync())
{
using (var stream = response.GetResponseStream())
{
return new JsonSerializer().Deserialize<SynchronizationReport>(new JsonTextReader(new StreamReader(stream)));
}
}
}
catch (WebException exception)
{
throw exception.BetterWebExceptionError();
}
}