Skip to content

Commit

Permalink
Increase message size and show discovered links
Browse files Browse the repository at this point in the history
  • Loading branch information
GordonBeeming committed Mar 28, 2024
1 parent d30a4b0 commit e82b965
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 21 deletions.
58 changes: 42 additions & 16 deletions src/GordonBeemingCom.Editor/Pages/UpdateAcceptedUrls.razor
@@ -1,7 +1,5 @@
@page "/accepted-urls"
@using System.Text;
@using System.Text.RegularExpressions;
@using System.Globalization;

@inject IExternalUrlsService externalUrlsService
@inject AppDbContext context
@inject IConfiguration configuration
Expand All @@ -11,18 +9,22 @@
<PageTitle>Accepted Urls</PageTitle>

<h1>Accepted Urls</h1>

<button type="submit" class="btn btn-primary" @onclick="ScanAllPosts">@(scanButtonText)</button>

<div class="row">
<div class="form-group col-lg-12 col-sm-12">
<label for="blogTags">Html:</label>
<InputTextArea id="blogTags" class="form-control" rows="10" @bind-Value="@html" />
<EditForm Model="htmlContext">

<div class="row">
<div class="form-group col-lg-12 col-sm-12">
<label for="htmlInput">Html:</label>
<InputTextArea id="htmlInput" class="form-control" rows="10" @bind-Value="@htmlContext.Html"/>
</div>
<div class="form-group col-lg-12 col-sm-12">
<button type="submit" class="btn btn-primary" @onclick="ScanHtmlForUrls">@(scanHtmlButtonText)</button>
</div>
</div>
<div class="form-group col-lg-12 col-sm-12">
<button type="submit" class="btn btn-primary" @onclick="ScanHtmlForUrls">@(scanHtmlButtonText)</button>
</div>
</div>

</EditForm>

@if (validationIssues.Count > 0)
{
Expand All @@ -34,21 +36,36 @@
</ul>
}

@if (discoveredLinks.Count > 0)
{
<h3>Discovered Urls</h3>
<ul>
@for (int i = 0; i < discoveredLinks.Count; i++)
{
<li>@($"{discoveredLinks[i]}")</li>
}
</ul>
}

@code {
private const string scanButtonTextDefault = "Scan existing posts for urls";
private string scanButtonText { get; set; } = scanButtonTextDefault;
private const string scanHtmlButtonTextDefault = "Scan";
private string scanHtmlButtonText { get; set; } = scanHtmlButtonTextDefault;
private string html { get; set; } = string.Empty;
private int ScanCount { get; set; }
private List<string> validationIssues = new();
private List<string> discoveredLinks = new();

private HtmlContentBlockContext? htmlContext;

protected override async Task OnInitializedAsync()
{
if (httpContextAccessor?.HttpContext?.User?.Identity?.Name?.Equals(configuration["Blog:Username"]) == false)
{
return;
}

htmlContext = new();
}

private async Task ScanAllPosts()
Expand Down Expand Up @@ -85,6 +102,7 @@
ScanCount = 0;
scanButtonText = $"{scanButtonTextDefault} (done)";
StateHasChanged();
await LoadDiscoveredLinks();
}
catch (Exception ex)
{
Expand All @@ -96,18 +114,26 @@
}
}

private async Task LoadDiscoveredLinks()
{
discoveredLinks = (await externalUrlsService.GetUrlsCacheAsync())
.OrderBy(o=>o)
.ToList();
StateHasChanged();
}

private async Task ScanHtmlForUrls()
{
try
{
scanHtmlButtonText = "Scanning...";
StateHasChanged();
await Task.Delay(1000);
await externalUrlsService.RegisterUrlsAsync(html);
await externalUrlsService.RegisterUrlsAsync(htmlContext.Html);
await externalUrlsService.CommitChangesAsync();
html = string.Empty;
htmlContext.Html = string.Empty;
scanHtmlButtonText = $"{scanHtmlButtonTextDefault} (done)";
StateHasChanged();
await LoadDiscoveredLinks();
}
catch (Exception ex)
{
Expand Down
9 changes: 8 additions & 1 deletion src/GordonBeemingCom.Editor/Program.cs
Expand Up @@ -61,7 +61,14 @@
});

builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddServerSideBlazor(options =>
{
options.DetailedErrors = true;
})
.AddHubOptions(options =>
{
options.MaximumReceiveMessageSize = 1024 * 1024;
});
builder.Services.AddScoped<AuthenticationStateProvider, RevalidatingIdentityAuthenticationStateProvider<IdentityUser>>();
builder.Services.AddSingleton<IFileService, FileService>();
builder.Services.AddSingleton<IBlobServiceClientService, BlobServiceClientService>();
Expand Down
20 changes: 16 additions & 4 deletions src/GordonBeemingCom.Shared/Services/ExternalUrlsService.cs
Expand Up @@ -12,6 +12,7 @@ public interface IExternalUrlsService
Task<bool> IsUrlRegisteredAsync(string url);
Task RegisterUrlsAsync(string html);
Task CommitChangesAsync();
Task<List<string>> GetUrlsCacheAsync();
}

public sealed class ExternalUrlsService : IExternalUrlsService
Expand All @@ -33,13 +34,14 @@ public async Task AddAcceptedExternalUrlAsync(string url)
{
return;
}
var urlHash = await _hashHelper.GetHashOfString(url, HashHelper.Algorithms.SHA1);
if (await IsUrlHashRegisteredAsync(urlHash))
if (_urlCache.Contains(url))
{
return;
}
if (_urlCache.Contains(url))
var urlHash = await _hashHelper.GetHashOfString(url, HashHelper.Algorithms.SHA1);
if (await IsUrlHashRegisteredAsync(urlHash))
{
_urlCache.Add(url);
return;
}
var acceptedExternalUrl = new AcceptedExternalUrls
Expand All @@ -58,7 +60,12 @@ public async Task<bool> IsUrlRegisteredAsync(string url)
return true;
}
var urlHash = await _hashHelper.GetHashOfString(url, HashHelper.Algorithms.SHA1);
return await IsUrlHashRegisteredAsync(urlHash);
var exists = await IsUrlHashRegisteredAsync(urlHash);
if (exists)
{
_urlCache.Add(url);
}
return exists;
}

private async Task<bool> IsUrlHashRegisteredAsync(string urlHash)
Expand All @@ -84,4 +91,9 @@ public async Task CommitChangesAsync()
{
await _context.SaveChangesAsync();
}

public Task<List<string>> GetUrlsCacheAsync()
{
return Task.FromResult(_urlCache.ToList());
}
}

0 comments on commit e82b965

Please sign in to comment.