hmn/src/website/whenisit.go

68 lines
1.5 KiB
Go

package website
import (
"fmt"
"strconv"
"git.handmade.network/hmn/hmn/src/templates"
)
type WhenIsItData struct {
templates.BaseData
Timestamp int
Name string
Url string
}
func WhenIsIt(c *RequestContext) ResponseData {
timestampStr := c.Req.URL.Query().Get("t")
timestamp := 0
hasTimestamp := false
if timestampStr != "" {
var err error
timestamp, err = strconv.Atoi(timestampStr)
hasTimestamp = (err == nil)
}
baseData := getBaseDataAutocrumb(c, "When is it?")
baseData.OpenGraphItems = append(baseData.OpenGraphItems, templates.OpenGraphItem{
Property: "og:title",
Value: baseData.Title,
})
baseData.OpenGraphItems = append(baseData.OpenGraphItems, templates.OpenGraphItem{
Property: "og:url",
Value: c.FullUrl(),
})
if hasTimestamp {
name := c.Req.URL.Query().Get("n")
url := c.Req.URL.Query().Get("u")
if name != "" {
baseData.OpenGraphItems = append(baseData.OpenGraphItems, templates.OpenGraphItem{
Property: "og:description",
Value: fmt.Sprintf("Find out when %s starts.", name),
})
}
var res ResponseData
res.MustWriteTemplate("whenisit.html", WhenIsItData{
BaseData: baseData,
Timestamp: timestamp,
Name: name,
Url: url,
}, c.Perf)
return res
} else {
baseData.OpenGraphItems = append(baseData.OpenGraphItems, templates.OpenGraphItem{
Property: "og:description",
Value: "A countdown timer",
})
var res ResponseData
res.MustWriteTemplate("whenisit_setup.html", baseData, c.Perf)
return res
}
}