CalDavSynchronizer.DataAccess.CalDavDataAccess.GetCalendarHomeSetUriOrNull C# (CSharp) Метод

GetCalendarHomeSetUriOrNull() публичный Метод

public GetCalendarHomeSetUriOrNull ( bool useWellKnownUrl ) : Task
useWellKnownUrl bool
Результат Task
    public async Task<Uri> GetCalendarHomeSetUriOrNull (bool useWellKnownUrl)
    {
      var autodiscoveryUrl = useWellKnownUrl ? AutoDiscoveryUrl : _serverUrl;

      var currentUserPrincipalUrl = await GetCurrentUserPrincipalUrl (autodiscoveryUrl);
      if (currentUserPrincipalUrl != null)
      {
        var calendarHomeSetProperties = await GetCalendarHomeSet (currentUserPrincipalUrl);

        XmlNode homeSetNode = calendarHomeSetProperties.XmlDocument.SelectSingleNode ("/D:multistatus/D:response/D:propstat/D:prop/C:calendar-home-set", calendarHomeSetProperties.XmlNamespaceManager);
        if (homeSetNode != null && homeSetNode.HasChildNodes)
        {
          foreach (XmlNode homeSetNodeHref in homeSetNode.ChildNodes)
          {
            if (!string.IsNullOrEmpty (homeSetNodeHref.InnerText))
            {
              var calendarHomeSetUri = Uri.IsWellFormedUriString (homeSetNodeHref.InnerText, UriKind.Absolute)
                ? new Uri(homeSetNodeHref.InnerText)
                : new Uri(calendarHomeSetProperties.DocumentUri.GetLeftPart (UriPartial.Authority) +
                          homeSetNodeHref.InnerText);
              return calendarHomeSetUri;
            }
          }
          
        }
      }
      return null;
    }