public async Task <SharepointSiteValidationResponse> ValidateSite(string token, string name, bool exactMatch = false) { var graphserviceClient = new GraphServiceClient( new DelegateAuthenticationProvider( (requestMessage) => { requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", token); return(Task.FromResult(0)); })); var sites = await graphserviceClient.Sites.Request(new [] { new QueryOption("search", name) }).GetAsync(); var siteValidationResponse = new SharepointSiteValidationResponse(); if (sites.Count >= 1) { if (exactMatch) { siteValidationResponse.IsValid = true; siteValidationResponse.SiteId = sites.First().Id; siteValidationResponse.MatchingUris = new List <Uri>() { new Uri(sites.First().WebUrl) }; siteValidationResponse.MatchingSites = new List <string>() { sites.First().DisplayName }; } else { siteValidationResponse.IsValid = true; siteValidationResponse.SiteId = sites.Count > 1 ? null : sites.First().Id; siteValidationResponse.MatchingUris = sites.CurrentPage.Select(i => new Uri(i.WebUrl)).ToList(); siteValidationResponse.MatchingSites = sites.CurrentPage.Select(i => i.DisplayName).ToList(); } } else { siteValidationResponse.IsValid = false; } return(siteValidationResponse); }
public async Task <SharepointSiteValidationResponse> ValidateSite(string accessToken, Uri url) { var graphService = new GraphServiceClient( new DelegateAuthenticationProvider( (requestMessage) => { requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", accessToken); return(Task.FromResult(0)); })); var siteValidationResponse = new SharepointSiteValidationResponse(); if (url.IsAbsoluteUri) { try { var siteInfo = await graphService.Sites.GetByPath(string.Join(string.Empty, url.Segments.Skip(1).Take(3)), "root").Request().GetAsync(); siteValidationResponse.IsValid = true; siteValidationResponse.MatchingUris = new List <Uri>() { new Uri(siteInfo.WebUrl) }; siteValidationResponse.SiteId = siteInfo.Id; } catch (Exception e) { siteValidationResponse.IsValid = false; } } else { siteValidationResponse.IsValid = false; } return(siteValidationResponse); }