Replace file-based blog with API-backed service
BlogService now fetches from Media.JoshHeaps.Net API via HttpClient with in-memory caching (5-min TTL) and stale cache fallback. Removed Markdig/YamlDotNet dependencies. All page models now async. Co-Authored-By: Claude Opus 4.6 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
5fd3a5d7c1
commit
8043eee4cc
@@ -0,0 +1,32 @@
|
||||
@page "/blog/{slug}"
|
||||
@model JoshHeaps.Net.Pages.Blog.PostModel
|
||||
@{
|
||||
ViewData["Title"] = Model.Post!.Title + " - JoshHeaps.Net";
|
||||
Layout = "_Layout";
|
||||
}
|
||||
|
||||
<article class="blog-post">
|
||||
<a href="/blog" class="blog-back">← Back to blog</a>
|
||||
|
||||
<header class="blog-post-header">
|
||||
<h1 class="blog-post-title">@Model.Post.Title</h1>
|
||||
<time class="blog-post-date" datetime="@Model.Post.PublishedDate.ToString("yyyy-MM-dd")">
|
||||
@Model.Post.PublishedDate.ToString("MMMM d, yyyy")
|
||||
</time>
|
||||
<div class="blog-post-tags">
|
||||
@foreach (var tag in Model.Post.Tags)
|
||||
{
|
||||
<a href="/blog?tag=@tag" class="blog-tag">@tag</a>
|
||||
}
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="post-content">
|
||||
@Html.Raw(Model.Post.HtmlContent)
|
||||
</div>
|
||||
</article>
|
||||
|
||||
@section Styles {
|
||||
<link href="/css/variables.css?v=@ViewData["cssVersion"]" rel="stylesheet" type="text/css" />
|
||||
<link href="/css/blog/post.css?v=@ViewData["cssVersion"]" rel="stylesheet" type="text/css" />
|
||||
}
|
||||
Reference in New Issue
Block a user