internal OAuthAccount(string id, string displayName, OAuthProvider provider, OAuthAccessToken token) { Id = id; DisplayName = displayName; Provider = provider; AccessToken = token; }
private string BuildResourceTokenUrl(string url, OAuthAccessToken token, IEnumerable <KeyValuePair <string, string> > queryParameters = null) { var parameters = new List <KeyValuePair <string, string> >(Definition.ResourceQueryParameters); if (null != queryParameters) { parameters.AddRange(queryParameters); } if (Definition.TokenType == TokenType.Url) { parameters.Add(new KeyValuePair <string, string>(Definition.TokenRequestUrlParameter, token.Token)); } return(BuildUrl(url, parameters)); }
internal async Task <OAuthResponse> RefreshToken(OAuthAccessToken token) { if (!Definition.RefreshesToken) { return(OAuthResponse.WithError("NotSupported", "Provider does not support token refresh.")); } return(await GetToken(Definition.TokenUrl, Definition.RefreshTokenAuthorizationHeaders, BuildRefreshTokenRequestFields( string.IsNullOrEmpty(token.RefreshToken) ? token.Token : token.RefreshToken))); }
internal virtual async Task <T> GetResource <T>(string resourceUrl, OAuthAccessToken token, IEnumerable <KeyValuePair <string, string> > queryParameters = null) where T : class { var url = BuildResourceTokenUrl(resourceUrl, token, queryParameters); using (var client = new HttpClient()) { var graphHeaders = ResourceHeaders(token); foreach (var header in graphHeaders) { client.DefaultRequestHeaders.Add(header.Key, header.Value); } var response = await client.GetAsync(url); return(await ReadHttpResponse <T>(response)); } }
internal void SetToken(OAuthAccessToken token) { AccessToken = token; }
internal async Task <AccountData> GetAccountData(OAuthAccessToken token) { var graphResponseString = await GetResource <string>(Definition.GraphUrl, token); return(ReadAccountData(graphResponseString)); }
internal virtual IEnumerable <KeyValuePair <string, string> > ResourceHeaders(OAuthAccessToken token) { return(CustomResourceHeaders(token).Union( Definition.TokenType == TokenType.Url ? new KeyValuePair <string, string> [0] : new[] { new KeyValuePair <string, string>("Authorization", $"{Definition.BearerTokenType} {token.Token}") })); }
internal virtual IEnumerable <KeyValuePair <string, string> > CustomResourceHeaders(OAuthAccessToken token) { return(new KeyValuePair <string, string> [0]); }