From 01cd31c0eb02c8d3fd885b7230afdc470290fa4c Mon Sep 17 00:00:00 2001
From: Aki Kareha
Date: Thu, 25 Sep 2025 15:49:47 +0900
Subject: [PATCH] Add info action
---
internal/action/handler.go | 2 +
internal/action/info.go | 22 +++++++
internal/config/public.go | 79 ++++++++++++++++++++++
internal/util/templates/info.html | 106 ++++++++++++++++++++++++++++++
internal/util/templates/view.html | 2 +
5 files changed, 211 insertions(+)
create mode 100644 internal/action/info.go
create mode 100644 internal/config/public.go
create mode 100644 internal/util/templates/info.html
diff --git a/internal/action/handler.go b/internal/action/handler.go
index 2afa451..75b662c 100644
--- a/internal/action/handler.go
+++ b/internal/action/handler.go
@@ -60,6 +60,8 @@ func handle(cfg *config.Config, w http.ResponseWriter, r *http.Request) {
if params.Ext == "wiki" {
switch params.Action {
+ case "info":
+ Info(cfg, w, r, ¶ms)
case "", "view":
View(cfg, w, r, ¶ms)
case "edit":
diff --git a/internal/action/info.go b/internal/action/info.go
new file mode 100644
index 0000000..b9f7088
--- /dev/null
+++ b/internal/action/info.go
@@ -0,0 +1,22 @@
+package action
+
+import (
+ "net/http"
+
+ "github.com/akikareha/himewiki/internal/config"
+ "github.com/akikareha/himewiki/internal/util"
+)
+
+
+func Info(cfg *config.Config, w http.ResponseWriter, r *http.Request, params *Params) {
+ public := config.Publish(cfg)
+
+ tmpl := util.NewTemplate("info.html")
+ tmpl.Execute(w, struct {
+ SiteName string
+ Public config.Public
+ }{
+ SiteName: cfg.Site.Name,
+ Public: public,
+ })
+}
diff --git a/internal/config/public.go b/internal/config/public.go
new file mode 100644
index 0000000..b637de3
--- /dev/null
+++ b/internal/config/public.go
@@ -0,0 +1,79 @@
+package config
+
+type Public struct {
+ Site struct {
+ Base string
+ Name string
+ Card string
+ }
+
+ Wiki struct {
+ Front string
+ }
+
+ Image struct {
+ Domains []string
+ Extensions []string
+ }
+
+ Filter struct {
+ Agent string
+ System string
+ Prompt string
+ }
+
+ ImageFilter struct {
+ Agent string
+ MaxLength string
+ MaxSize string
+ }
+}
+
+func Publish(cfg *Config) Public {
+ return Public {
+
+ Site: struct {
+ Base string
+ Name string
+ Card string
+ }{
+ Base: cfg.Site.Base,
+ Name: cfg.Site.Name,
+ Card: cfg.Site.Card,
+ },
+
+ Wiki: struct {
+ Front string
+ }{
+ Front: cfg.Wiki.Front,
+ },
+
+ Image: struct {
+ Domains []string
+ Extensions []string
+ }{
+ Domains: cfg.Image.Domains,
+ Extensions: cfg.Image.Extensions,
+ },
+
+ Filter: struct {
+ Agent string
+ System string
+ Prompt string
+ }{
+ Agent: cfg.Filter.Agent,
+ System: cfg.Filter.System,
+ Prompt: cfg.Filter.Prompt,
+ },
+
+ ImageFilter: struct {
+ Agent string
+ MaxLength string
+ MaxSize string
+ }{
+ Agent: cfg.ImageFilter.Agent,
+ MaxLength: cfg.ImageFilter.MaxLength,
+ MaxSize: cfg.ImageFilter.MaxSize,
+ },
+ }
+}
diff --git a/internal/util/templates/info.html b/internal/util/templates/info.html
new file mode 100644
index 0000000..a6523fa
--- /dev/null
+++ b/internal/util/templates/info.html
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+Info - {{.SiteName}}
+
+
+
+
+
+Info
+
+Configurations
+
+Site
+
+Base = {{.Public.Site.Base}}
+
+
+Name = {{.Public.Site.Name}}
+
+
+Card = {{.Public.Site.Card}}
+
+
+
+
+
+Wiki
+
+Front = {{.Public.Wiki.Front}}
+
+
+Image
+
+Domains =
+
+{{range .Public.Image.Domains}}
+- {{.}}
+{{else}}
+- (none)
+{{end}}
+
+
+
+Extensions =
+
+{{range .Public.Image.Extensions}}
+- {{.}}
+{{else}}
+- (none)
+{{end}}
+
+
+
+Filter
+
+Agent = {{.Public.Filter.Agent}}
+
+
+System =
+
{{.Public.Filter.System}}
+
+
+Prompt =
+
{{.Public.Filter.Prompt}}
+
+
+ImageFilter
+
+Agent = {{.Public.ImageFilter.Agent}}
+
+
+MaxLength = {{.Public.ImageFilter.MaxLength}}
+
+
+MaxSize = {{.Public.ImageFilter.MaxSize}}
+
+
+
+
+
+
diff --git a/internal/util/templates/view.html b/internal/util/templates/view.html
index def37f7..ee310a8 100644
--- a/internal/util/templates/view.html
+++ b/internal/util/templates/view.html
@@ -37,6 +37,7 @@
Recent
All
Upload
+Info
@@ -60,6 +61,7 @@
Recent
All
Upload
+Info