CalDavSynchronizer.DataAccess.CardDavDataAccess.GetVersions C# (CSharp) Method

GetVersions() public method

public GetVersions ( IEnumerable urls ) : string>>>.Task
urls IEnumerable
return string>>>.Task
    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;
      }
    }