Http request service added
This commit is contained in:
parent
992414bd50
commit
25e93a39fd
31
src/PanoptesFrontend/Data/HttpService.cs
Normal file
31
src/PanoptesFrontend/Data/HttpService.cs
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
namespace PanoptesFrontend.Data;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Text.Json;
|
||||||
|
|
||||||
|
public interface IHttpService
|
||||||
|
{
|
||||||
|
Task<T> GetAsync<T>(string endpoint);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class HttpService : IHttpService {
|
||||||
|
|
||||||
|
private readonly HttpClient httpClient;
|
||||||
|
|
||||||
|
public HttpService(HttpClient httpClient){
|
||||||
|
this.httpClient = httpClient;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<T> GetAsync<T>(string endpoint){
|
||||||
|
var response = await httpClient.GetAsync(endpoint);
|
||||||
|
|
||||||
|
if (response.IsSuccessStatusCode){
|
||||||
|
var contentStream = await response.Content.ReadAsStreamAsync();
|
||||||
|
var options = new JsonSerializerOptions {PropertyNameCaseInsensitive = true};
|
||||||
|
return await JsonSerializer.DeserializeAsync<T>(contentStream, options);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
throw new Exception($"Failed to get data from endpoint: {endpoint}. Error code: {response.StatusCode}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,12 +0,0 @@
|
|||||||
namespace PanoptesFrontend.Data;
|
|
||||||
|
|
||||||
public class WeatherForecast
|
|
||||||
{
|
|
||||||
public DateTime Date { get; set; }
|
|
||||||
|
|
||||||
public int TemperatureC { get; set; }
|
|
||||||
|
|
||||||
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
|
|
||||||
|
|
||||||
public string? Summary { get; set; }
|
|
||||||
}
|
|
||||||
@ -1,19 +0,0 @@
|
|||||||
namespace PanoptesFrontend.Data;
|
|
||||||
|
|
||||||
public class WeatherForecastService
|
|
||||||
{
|
|
||||||
private static readonly string[] Summaries = new[]
|
|
||||||
{
|
|
||||||
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
|
|
||||||
};
|
|
||||||
|
|
||||||
public Task<WeatherForecast[]> GetForecastAsync(DateTime startDate)
|
|
||||||
{
|
|
||||||
return Task.FromResult(Enumerable.Range(1, 5).Select(index => new WeatherForecast
|
|
||||||
{
|
|
||||||
Date = startDate.AddDays(index),
|
|
||||||
TemperatureC = Random.Shared.Next(-20, 55),
|
|
||||||
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
|
|
||||||
}).ToArray());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,48 +0,0 @@
|
|||||||
@page "/fetchdata"
|
|
||||||
|
|
||||||
<PageTitle>Weather forecast</PageTitle>
|
|
||||||
|
|
||||||
@using PanoptesFrontend.Data
|
|
||||||
@inject WeatherForecastService ForecastService
|
|
||||||
|
|
||||||
<h1>Weather forecast</h1>
|
|
||||||
|
|
||||||
<p>This component demonstrates fetching data from a service.</p>
|
|
||||||
|
|
||||||
@if (forecasts == null)
|
|
||||||
{
|
|
||||||
<p><em>Loading...</em></p>
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
<table class="table">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Date</th>
|
|
||||||
<th>Temp. (C)</th>
|
|
||||||
<th>Temp. (F)</th>
|
|
||||||
<th>Summary</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
@foreach (var forecast in forecasts)
|
|
||||||
{
|
|
||||||
<tr>
|
|
||||||
<td>@forecast.Date.ToShortDateString()</td>
|
|
||||||
<td>@forecast.TemperatureC</td>
|
|
||||||
<td>@forecast.TemperatureF</td>
|
|
||||||
<td>@forecast.Summary</td>
|
|
||||||
</tr>
|
|
||||||
}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
}
|
|
||||||
|
|
||||||
@code {
|
|
||||||
private WeatherForecast[]? forecasts;
|
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
|
||||||
{
|
|
||||||
forecasts = await ForecastService.GetForecastAsync(DateTime.Now);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
<div class="card">
|
|
||||||
<div class="card-body">
|
|
||||||
<p>@Data.Text</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@code {
|
|
||||||
[Parameter]
|
|
||||||
public Component Data { get; set; }
|
|
||||||
}
|
|
||||||
@ -1,11 +1,10 @@
|
|||||||
@page "/test"
|
@page "/test"
|
||||||
|
|
||||||
@using System.Net.Http.Json
|
@using PanoptesFrontend.Data
|
||||||
@using System.Text.Json
|
@using System.Text.Json;
|
||||||
|
@inject IHttpService httpService
|
||||||
|
|
||||||
@inject HttpClient httpClient
|
@* @if (data != null)
|
||||||
|
|
||||||
@if (data != null)
|
|
||||||
{
|
{
|
||||||
@foreach (var component in data) {
|
@foreach (var component in data) {
|
||||||
switch (component.Type) {
|
switch (component.Type) {
|
||||||
@ -28,16 +27,17 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
} *@
|
||||||
|
|
||||||
|
<pre>@response.Text</pre>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
private Component[] data;
|
private Component response;
|
||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
var response = await httpClient.GetStringAsync("http://localhost:8080/schema");
|
response = await httpService.GetAsync<Component>("http://localhost:8080/test");
|
||||||
var options = new JsonSerializerOptions {PropertyNameCaseInsensitive = true};
|
|
||||||
var json = JsonSerializer.Deserialize<Schema>(response, options);
|
|
||||||
data = json.components;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Blazor-ApexCharts" Version="0.9.20-beta" />
|
<PackageReference Include="Blazor-ApexCharts" Version="0.9.20-beta" />
|
||||||
|
<PackageReference Include="xunit" Version="2.4.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@ -7,8 +7,8 @@ var builder = WebApplication.CreateBuilder(args);
|
|||||||
// Add services to the container.
|
// Add services to the container.
|
||||||
builder.Services.AddRazorPages();
|
builder.Services.AddRazorPages();
|
||||||
builder.Services.AddServerSideBlazor();
|
builder.Services.AddServerSideBlazor();
|
||||||
builder.Services.AddSingleton<WeatherForecastService>();
|
|
||||||
builder.Services.AddHttpClient();
|
builder.Services.AddHttpClient();
|
||||||
|
builder.Services.AddSingleton<IHttpService, HttpService>();
|
||||||
|
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user