public async Task <TokenDto> Login(AuthorizationCredentials authorizationCredentials) { var existingToken = _fileConfigManager.GetFromFile <TokenDto>(ConfigFiles.Token); if (existingToken == null) { var newToken = await _client.Authorize(authorizationCredentials); _fileConfigManager.WriteData(newToken.ToPersistenceToken(), ConfigFiles.Token); return(newToken); } if (!existingToken.Expired) { return(existingToken); } var refreshedToken = await _client.AuthorizeAsync(new RefreshTokenRequest { AuthorizationCredentials = authorizationCredentials, RefreshToken = existingToken.Token.RefreshToken }); _fileConfigManager.WriteData(refreshedToken.ToPersistenceToken(), ConfigFiles.Token); return(refreshedToken); }
private AuthenticationHeaderValue GetBasicAuth(AuthorizationCredentials authorizationCredentials) { return(new AuthenticationHeaderValue("Basic", Convert.ToBase64String( Encoding.ASCII.GetBytes( $"{authorizationCredentials.Key}:{authorizationCredentials.Secret}")))); }
private HttpClient CreateHttpClient(AuthorizationCredentials authorizationCredentials) { return(new HttpClient { DefaultRequestHeaders = { Authorization = GetBasicAuth(authorizationCredentials) } }); }
public async Task <TokenDto> Authorize(AuthorizationCredentials authorizationCredentials, CancellationToken cancellationToken = default) { var client = CreateHttpClient(authorizationCredentials); var timeBeforeRequest = DateTime.UtcNow; var response = await client.PostAsync(AuthUrl, new FormUrlEncodedContent(new[] { new KeyValuePair <string, string>("grant_type", "client_credentials"), }), cancellationToken); return(await ToToken(response, timeBeforeRequest)); }