Created
May 13, 2024 12:19
-
-
Save LauraKokkarinen/f7a20dbb6cb59ff6cd52625187adc8c5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
protected readonly HttpClient _httpClient; | |
protected readonly ITokenAcquisition _tokenAcquisition; | |
protected readonly string _baseUrl = string.Empty; | |
protected readonly string[] _scopes = Array.Empty<string>(); | |
public ApiService(IConfiguration configuration, ITokenAcquisition tokenAcquisition, HttpClient httpClient) | |
{ | |
_httpClient = httpClient; | |
_tokenAcquisition = tokenAcquisition; | |
_baseUrl = configuration["WebApi:BaseUrl"]; | |
_scopes = configuration["WebApi:Scopes"].Split(' '); | |
} | |
protected async Task PrepareAuthenticatedClient() | |
{ | |
string? accessToken; | |
try | |
{ | |
accessToken = await _tokenAcquisition.GetAccessTokenForUserAsync(_scopes); | |
} | |
catch (MsalUiRequiredException) | |
{ | |
accessToken = await _tokenAcquisition.GetAccessTokenForUserAsync(_scopes, | |
tokenAcquisitionOptions: new TokenAcquisitionOptions { ForceRefresh = true }); | |
} | |
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); | |
_httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); | |
} | |
public async Task<object> Get(string url) | |
{ | |
await PrepareAuthenticatedClient(); | |
return await _httpClient.GetAsync(url); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment