From aa3ee239f6a9a0583aa7e3b56e1a424d3be7f8ac Mon Sep 17 00:00:00 2001 From: "Daniel J. Summers" Date: Tue, 31 May 2022 09:48:19 -0400 Subject: [PATCH] Return 404 vs. 500 for invalid category --- src/MyWebLog/Handlers/Post.fs | 14 ++++++-------- src/MyWebLog/appsettings.json | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/MyWebLog/Handlers/Post.fs b/src/MyWebLog/Handlers/Post.fs index 10e99ee..93e4a09 100644 --- a/src/MyWebLog/Handlers/Post.fs +++ b/src/MyWebLog/Handlers/Post.fs @@ -118,20 +118,17 @@ let pageOfCategorizedPosts slugAndPage : HttpHandler = fun next ctx -> task { let conn = ctx.Conn match parseSlugAndPage webLog slugAndPage with | Some pageNbr, slug, isFeed -> - let allCats = CategoryCache.get ctx - let cat = allCats |> Array.find (fun cat -> cat.slug = slug) - if isFeed then + match CategoryCache.get ctx |> Array.tryFind (fun cat -> cat.slug = slug) with + | Some cat when isFeed -> return! Feed.generate (Feed.CategoryFeed ((CategoryId cat.id), $"category/{slug}/{webLog.rss.feedName}")) (defaultArg webLog.rss.itemsInFeed webLog.postsPerPage) next ctx - else - let allCats = CategoryCache.get ctx - let cat = allCats |> Array.find (fun cat -> cat.slug = slug) + | Some cat -> // Category pages include posts in subcategories match! Data.Post.findPageOfCategorizedPosts webLog.id (getCategoryIds slug ctx) pageNbr webLog.postsPerPage conn with | posts when List.length posts > 0 -> - let! hash = preparePostList webLog posts CategoryList cat.slug pageNbr webLog.postsPerPage ctx conn - let pgTitle = if pageNbr = 1 then "" else $""" (Page {pageNbr})""" + let! hash = preparePostList webLog posts CategoryList cat.slug pageNbr webLog.postsPerPage ctx conn + let pgTitle = if pageNbr = 1 then "" else $""" (Page {pageNbr})""" hash.Add ("page_title", $"{cat.name}: Category Archive{pgTitle}") hash.Add ("subtitle", defaultArg cat.description "") hash.Add ("is_category", true) @@ -139,6 +136,7 @@ let pageOfCategorizedPosts slugAndPage : HttpHandler = fun next ctx -> task { hash.Add ("slug", slug) return! themedView "index" next ctx hash | _ -> return! Error.notFound next ctx + | None -> return! Error.notFound next ctx | None, _, _ -> return! Error.notFound next ctx } diff --git a/src/MyWebLog/appsettings.json b/src/MyWebLog/appsettings.json index 0be4f82..bcc5748 100644 --- a/src/MyWebLog/appsettings.json +++ b/src/MyWebLog/appsettings.json @@ -3,7 +3,7 @@ "hostname": "data02.bitbadger.solutions", "database": "myWebLog_dev" }, - "Generator": "myWebLog 2.0-alpha17", + "Generator": "myWebLog 2.0-alpha18", "Logging": { "LogLevel": { "MyWebLog.Handlers": "Debug"