Compare commits
No commits in common. "33b1b850de94a12c683d902f7bfa003cb8641d3b" and "a7f6bb35e71d674b3a9098a9815a0117107880e9" have entirely different histories.
33b1b850de
...
a7f6bb35e7
16
README.md
16
README.md
|
@ -1,17 +1,3 @@
|
||||||
# burning.moe
|
# burning.moe
|
||||||
|
|
||||||
Code for the [burning.moe](https://burning.moe) homepage
|
Code for the burning.moe homepage
|
||||||
|
|
||||||
## technologies used
|
|
||||||
- [go](https://go.dev)
|
|
||||||
- [chi](https://github.com/go-chi/chi)
|
|
||||||
- [cleanenv](https://github.com/ilyakaznacheev/cleanenv)
|
|
||||||
- [mage](https://github.com/magefile/mage)
|
|
||||||
|
|
||||||
## why?
|
|
||||||
|
|
||||||
why not?
|
|
||||||
|
|
||||||
Improving my go skills, and learning to write web apps in go, was a
|
|
||||||
good opportunity to rewrite my ancient and basic website while having
|
|
||||||
it functionally not change at all.
|
|
|
@ -2,7 +2,6 @@ package handlers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
|
||||||
|
|
||||||
"git.burning.moe/celediel/burning.moe/internal/config"
|
"git.burning.moe/celediel/burning.moe/internal/config"
|
||||||
"git.burning.moe/celediel/burning.moe/internal/models"
|
"git.burning.moe/celediel/burning.moe/internal/models"
|
||||||
|
@ -22,12 +21,18 @@ var Handlers = []Handler{
|
||||||
// /about
|
// /about
|
||||||
{
|
{
|
||||||
Handles: "/about",
|
Handles: "/about",
|
||||||
Handler: makeBasicHandler("about"),
|
Handler: func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
app.Logger.Info("Got request for about page.")
|
||||||
|
render.RenderTemplate(w, "about.page", &models.TemplateData{})
|
||||||
|
},
|
||||||
},
|
},
|
||||||
// / comes last
|
// / comes last
|
||||||
{
|
{
|
||||||
Handles: "/",
|
Handles: "/",
|
||||||
Handler: makeBasicHandler("home"),
|
Handler: func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
app.Logger.Info("Got request for homepage.")
|
||||||
|
render.RenderTemplate(w, "home.page", &models.TemplateData{})
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,32 +40,3 @@ var Handlers = []Handler{
|
||||||
func Initialise(a *config.AppConfig) {
|
func Initialise(a *config.AppConfig) {
|
||||||
app = a
|
app = a
|
||||||
}
|
}
|
||||||
|
|
||||||
// makeBasicTemplateData creates a blank TemplateData containing only the
|
|
||||||
// time the related template was generated
|
|
||||||
func makeBasicTemplateData(name string) models.TemplateData {
|
|
||||||
var strMap map[string]string
|
|
||||||
if _, ok := app.TemplateCache.Cache[name]; ok {
|
|
||||||
strMap = map[string]string{
|
|
||||||
"GeneratedAt": app.TemplateCache.Cache[name].GeneratedAt.Format(time.UnixDate),
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
strMap = make(map[string]string)
|
|
||||||
}
|
|
||||||
|
|
||||||
templateData := models.TemplateData{
|
|
||||||
StringMap: strMap,
|
|
||||||
}
|
|
||||||
return templateData
|
|
||||||
}
|
|
||||||
|
|
||||||
// makeBasicHandler creates a basic handler that builds from a .page.tmpl
|
|
||||||
// file, and sends only the time the template was generated as TemplateData
|
|
||||||
func makeBasicHandler(name string) func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
app.Logger.Infof("Got request for %s page", name)
|
|
||||||
pageName := name + ".page.tmpl"
|
|
||||||
templateData := makeBasicTemplateData(pageName)
|
|
||||||
render.RenderTemplate(w, pageName, &templateData)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -48,7 +48,6 @@ func GenerateNewTemplateCache() (models.TemplateCache, error) {
|
||||||
for _, page := range pages {
|
for _, page := range pages {
|
||||||
name := filepath.Base(page)
|
name := filepath.Base(page)
|
||||||
app.Logger.Info("Generating template " + name)
|
app.Logger.Info("Generating template " + name)
|
||||||
generatedAt := time.Now()
|
|
||||||
|
|
||||||
templateSet, err := template.New(name).ParseFiles(page)
|
templateSet, err := template.New(name).ParseFiles(page)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -69,9 +68,8 @@ func GenerateNewTemplateCache() (models.TemplateCache, error) {
|
||||||
}
|
}
|
||||||
cache.Cache[name] = models.TemplateCacheItem{
|
cache.Cache[name] = models.TemplateCacheItem{
|
||||||
Template: templateSet,
|
Template: templateSet,
|
||||||
GeneratedAt: generatedAt,
|
GeneratedAt: time.Now(),
|
||||||
}
|
}
|
||||||
app.Logger.Debugf("Generated %s at %v", name, generatedAt.String())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// All was good, so return the cache, and no error
|
// All was good, so return the cache, and no error
|
||||||
|
@ -79,7 +77,8 @@ func GenerateNewTemplateCache() (models.TemplateCache, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// RenderTemplate renders requested template (t), pulling from cache.
|
// RenderTemplate renders requested template (t), pulling from cache.
|
||||||
func RenderTemplate(w http.ResponseWriter, filename string, data *models.TemplateData) {
|
func RenderTemplate(w http.ResponseWriter, t string, data *models.TemplateData) {
|
||||||
|
filename := t + ".tmpl"
|
||||||
var cache models.TemplateCache
|
var cache models.TemplateCache
|
||||||
if app.UseCache {
|
if app.UseCache {
|
||||||
cache = app.TemplateCache
|
cache = app.TemplateCache
|
||||||
|
@ -89,7 +88,6 @@ func RenderTemplate(w http.ResponseWriter, filename string, data *models.Templat
|
||||||
if err != nil {
|
if err != nil {
|
||||||
app.Logger.Fatal("Error generating template cache, bailing out!")
|
app.Logger.Fatal("Error generating template cache, bailing out!")
|
||||||
}
|
}
|
||||||
app.TemplateCache = cache
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get templates from cache
|
// Get templates from cache
|
||||||
|
@ -103,11 +101,11 @@ func RenderTemplate(w http.ResponseWriter, filename string, data *models.Templat
|
||||||
err := template.Template.Execute(buf, data)
|
err := template.Template.Execute(buf, data)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
app.Logger.Fatal(fmt.Sprintf("Error executing template %s! Goodbye!", filename), "err", err)
|
app.Logger.Fatal("Error executing template %s! Goodbye!", "err", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = buf.WriteTo(w)
|
_, err = buf.WriteTo(w)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
app.Logger.Error(fmt.Sprintf("Error writing template %s!", filename), "err", err)
|
app.Logger.Error("Error writing template %s!\n", "err", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,11 +20,9 @@
|
||||||
{{- block "js" . }}
|
{{- block "js" . }}
|
||||||
{{ end -}}
|
{{ end -}}
|
||||||
<div id="leftfooter">
|
<div id="leftfooter">
|
||||||
template generated on {{index .StringMap "GeneratedAt"}}
|
note: please do not set fire to cute girls
|
||||||
</div>
|
</div>
|
||||||
<div id="rightfooter">
|
<div id="rightfooter">
|
||||||
note: please do not set fire to cute girls
|
|
||||||
<br />
|
|
||||||
powered by
|
powered by
|
||||||
<a href="https://www.debian.org/">debian</a>
|
<a href="https://www.debian.org/">debian</a>
|
||||||
and
|
and
|
||||||
|
|
Loading…
Reference in a new issue