public async Task<IReadOnlyList<EntityVersion<WebResourceName, string>>> GetVersions (IEnumerable<WebResourceName> urls)
{
WebResourceName firstResourceNameOrNull = null;
var requestBody = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
<A:addressbook-multiget xmlns:D=""DAV:"" xmlns:A=""urn:ietf:params:xml:ns:carddav"">
<D:prop>
<D:getetag/>
<D:getcontenttype/>
</D:prop>
" +
String.Join(
"\r\n",
urls.Select(u =>
{
if (firstResourceNameOrNull == null)
firstResourceNameOrNull = u;
return $"<D:href>{SecurityElement.Escape(u.OriginalAbsolutePath)}</D:href>";
})) + @"
</A:addressbook-multiget>
";
try
{
var responseXml = await _webDavClient.ExecuteWebDavRequestAndReadResponse (
UriHelper.AlignServerUrl (_serverUrl, firstResourceNameOrNull),
"REPORT",
0,
null,
null,
"application/xml",
requestBody
);
return ExtractVersions (responseXml);
}
catch (WebDavClientException x)
{
if (x.StatusCode == HttpStatusCode.NotFound)
return new EntityVersion<WebResourceName, string>[] { };
throw;
}
}