Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
@inject HttpClient Http
@attribute [StreamRendering(true)]
@using AutoRenderModeServices.Client.Features.WebScraper
@inject IWebScraperService _webScraper


@if (Text is null)
{
Expand All @@ -18,7 +19,6 @@ else

protected override async Task OnInitializedAsync()
{
var response = await Http.GetFromJsonAsync<string>("webscraper/bing");
Text = response;
Text = await _webScraper.Get();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace AutoRenderModeServices.Client.Features.WebScraper
{
public interface IWebScraperService
{
Task<string> Get();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using System.Net.Http.Json;

namespace AutoRenderModeServices.Client.Features.WebScraper;

public class WebScraperServiceWasm(HttpClient _httpClient) : IWebScraperService
{
public async Task<string> Get()
{
return await _httpClient.GetFromJsonAsync<string>("webscraper/bing") ?? "empty reply";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ WebScrape component is not working here, but it works in in the Web Scraper page
The reason is that the HttpClient needed to call back to the localhost has not been initialized with the BaseAddress yet.
Comment out the WebScrape component below and navigate to the Web Scraper page to see it working.

@* <WebScrape></WebScrape> *@
<WebScrape></WebScrape>
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
@page "/scrape"
@using AutoRenderModeServices.Client.Components

<PageTitle>Scrape Web Site</PageTitle>

<h1>ScrapeWebSite</h1>

@($"Browser:{OperatingSystem.IsBrowser()}")

<WebScrape></WebScrape>

@code {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
using AutoRenderModeServices.Client.Features.WebScraper;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;

var builder = WebAssemblyHostBuilder.CreateDefault(args);

builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddScoped<IWebScraperService, WebScraperServiceWasm>();

await builder.Build().RunAsync();
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using AutoRenderModeServices.Client.Features.WebScraper;

namespace AutoRenderModeServices.Client.Features;

public class WebScraperServiceServer(IHttpClientFactory _httpClientFactory) : IWebScraperService
{
public async Task<string> Get()
{
var client = _httpClientFactory.CreateClient();

var responseMessage = await client.GetAsync("https://www.bing.com");

if (responseMessage.IsSuccessStatusCode)
{
var text = await responseMessage.Content.ReadAsStringAsync();
return text;
}

return "";
}

}
19 changes: 10 additions & 9 deletions AutoRenderModeServices/AutoRenderModeServices/Program.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
using AutoRenderModeServices.Client.Features;
using AutoRenderModeServices.Client.Features.WebScraper;
using AutoRenderModeServices.Client.Pages;
using AutoRenderModeServices.Components;

Expand All @@ -10,6 +12,8 @@

builder.Services.AddHttpClient();

builder.Services.AddScoped<IWebScraperService, WebScraperServiceServer>();

var app = builder.Build();

// Configure the HTTP request pipeline.
Expand All @@ -34,19 +38,16 @@
.AddInteractiveWebAssemblyRenderMode()
.AddAdditionalAssemblies(typeof(Counter).Assembly);

app.MapGet("/webscraper/bing", async (IHttpClientFactory httpClientFactory) =>
app.MapGet("/webscraper/bing", async (IWebScraperService _webScraper) =>
{
var client = httpClientFactory.CreateClient();

var responseMessage = await client.GetAsync("https://www.bing.com");

if (responseMessage.IsSuccessStatusCode)
var responseText = await _webScraper.Get();

if (string.IsNullOrWhiteSpace(responseText))
{
var text = await responseMessage.Content.ReadAsStringAsync();
return Results.Ok(text);
return Results.Problem(detail: "Didn't work");
}

return Results.Problem(detail: "Didn't work");
return Results.Ok(responseText);
});

app.Run();