added Microser
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
using Microser.BlazorAppClient.Extensions;
|
||||
using Microser.Core.Models;
|
||||
|
||||
namespace Microser.BlazorAppClient.Services;
|
||||
|
||||
public class WeatherForecastApiService : IWeatherForecastApiService
|
||||
{
|
||||
private readonly IHttpClientFactory _httpClientFactory;
|
||||
private readonly IHttpContextAccessor _httpContextAccessor;
|
||||
|
||||
public WeatherForecastApiService(IHttpClientFactory httpClientFactory, IHttpContextAccessor httpContextAccessor)
|
||||
{
|
||||
_httpClientFactory = httpClientFactory ?? throw new ArgumentNullException(nameof(httpClientFactory));
|
||||
_httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor));
|
||||
}
|
||||
|
||||
public async Task<WeatherForecast[]?> GetAllAsync()
|
||||
{
|
||||
var httpClient = _httpClientFactory.CreateClient("WeatherForecastAPIClient");
|
||||
var request = new HttpRequestMessage(
|
||||
HttpMethod.Get,
|
||||
"/WeatherForecast");
|
||||
var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead)
|
||||
.ConfigureAwait(false);
|
||||
response.EnsureSuccessStatusCode();
|
||||
|
||||
//var content = await response.Content.ReadAsStringAsync();
|
||||
//var weatherForecastList = JsonSerializer.Deserialize<List<WeatherForecast>>(content);
|
||||
|
||||
var weatherForecastList = await response.ReadContentAs<WeatherForecast[]>();
|
||||
return weatherForecastList;
|
||||
|
||||
#region Another Way
|
||||
|
||||
// added for testing
|
||||
|
||||
//var apiClientCredentials = new ClientCredentialsTokenRequest
|
||||
//{
|
||||
// Address = "https://localhost:5005/connect/token",
|
||||
|
||||
// ClientId = "movieClient",
|
||||
// ClientSecret = "D04449B9D7BB46C7AF8B5951076115F3",
|
||||
|
||||
// Scope = "movieAPI"
|
||||
//};
|
||||
|
||||
//var client = new HttpClient();
|
||||
|
||||
//var disco = await client.GetDiscoveryDocumentAsync("https://localhost:5005");
|
||||
//if (disco.IsError)
|
||||
//{
|
||||
// return null; // throw 500 error
|
||||
//}
|
||||
|
||||
//var tokenResponse = await client.RequestClientCredentialsTokenAsync(apiClientCredentials);
|
||||
//if (tokenResponse.IsError)
|
||||
//{
|
||||
// return null;
|
||||
//}
|
||||
|
||||
//var apiClient = new HttpClient();
|
||||
|
||||
//apiClient.SetBearerToken(tokenResponse.AccessToken);
|
||||
|
||||
//var response = await apiClient.GetAsync("https://localhost:6001/api/movies");
|
||||
//response.EnsureSuccessStatusCode();
|
||||
//var content = await response.Content.ReadAsStringAsync();
|
||||
|
||||
//List<Movie> movieList = JsonSerializer.Deserialize<List<Movie>>(content);
|
||||
//return movieList;
|
||||
|
||||
#endregion Another Way
|
||||
}
|
||||
|
||||
public async Task<WeatherForecast?> GetByIdAsync(int id)
|
||||
{
|
||||
var httpClient = _httpClientFactory.CreateClient("WeatherForecastAPIClient");
|
||||
var request = new HttpRequestMessage(
|
||||
HttpMethod.Get,
|
||||
"/WeatherForecast/" + id);
|
||||
var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead)
|
||||
.ConfigureAwait(false);
|
||||
response.EnsureSuccessStatusCode();
|
||||
var item = await response.ReadContentAs<WeatherForecast>();
|
||||
return item;
|
||||
}
|
||||
|
||||
public async Task<WeatherForecast?> AddAsync(WeatherForecast weatherForecast)
|
||||
{
|
||||
var httpClient = _httpClientFactory.CreateClient("WeatherForecastAPIClient");
|
||||
var request = new HttpRequestMessage(
|
||||
HttpMethod.Post, "/WeatherForecast")
|
||||
{
|
||||
Content = JsonContent.Create(weatherForecast)
|
||||
};
|
||||
|
||||
var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead)
|
||||
.ConfigureAwait(false);
|
||||
response.EnsureSuccessStatusCode();
|
||||
|
||||
weatherForecast = await response.ReadContentAs<WeatherForecast>();
|
||||
return weatherForecast;
|
||||
}
|
||||
|
||||
public async Task<bool> DeleteByIdAsync(int id)
|
||||
{
|
||||
var httpClient = _httpClientFactory.CreateClient("WeatherForecastAPIClient");
|
||||
var request = new HttpRequestMessage(
|
||||
HttpMethod.Delete, "/WeatherForecast/" + id.ToString());
|
||||
|
||||
try
|
||||
{
|
||||
var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead)
|
||||
.ConfigureAwait(false);
|
||||
response.EnsureSuccessStatusCode();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public async Task<bool> UpdateAsync(int id, WeatherForecast weatherForecast)
|
||||
{
|
||||
var httpClient = _httpClientFactory.CreateClient("WeatherForecastAPIClient");
|
||||
var request = new HttpRequestMessage(
|
||||
HttpMethod.Put, "/WeatherForecast/" + weatherForecast.Id.ToString())
|
||||
{
|
||||
Content = JsonContent.Create(weatherForecast)
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead)
|
||||
.ConfigureAwait(false);
|
||||
response.EnsureSuccessStatusCode();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user