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

GetCalendarHomeSetUriOrNull() public method

public GetCalendarHomeSetUriOrNull ( bool useWellKnownUrl ) : Task
useWellKnownUrl bool
return Task
    public async Task<Uri> GetCalendarHomeSetUriOrNull(bool useWellKnownUrl)
    {
      var autodiscoveryUrl = useWellKnownUrl ? AutoDiscoveryUrl : _serverUrl;

      var currentUserPrincipalUrl = await GetCurrentUserPrincipalUrl (autodiscoveryUrl);
      if (currentUserPrincipalUrl != null)
      {
        var addressBookHomeSetProperties = await GetAddressBookHomeSet (currentUserPrincipalUrl);

        XmlNode homeSetNode = addressBookHomeSetProperties.XmlDocument.SelectSingleNode ("/D:multistatus/D:response/D:propstat/D:prop/A:addressbook-home-set", addressBookHomeSetProperties.XmlNamespaceManager);

        if (homeSetNode != null && homeSetNode.HasChildNodes)
        {
          foreach (XmlNode homeSetNodeHref in homeSetNode.ChildNodes)
          {
            if (!string.IsNullOrEmpty (homeSetNodeHref.InnerText))
            {
              var addressBookHomeSetUri = Uri.IsWellFormedUriString (homeSetNodeHref.InnerText, UriKind.Absolute)
                ? new Uri(homeSetNodeHref.InnerText)
                : new Uri(addressBookHomeSetProperties.DocumentUri.GetLeftPart (UriPartial.Authority) + homeSetNodeHref.InnerText);
              return addressBookHomeSetUri;
            }
          }

        }
      }
      return null;
    }