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;
}