52 lines
1.6 KiB
Go
52 lines
1.6 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"html/template"
|
||
|
"net/http"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
type IndexPage struct {
|
||
|
BookTitle string
|
||
|
Timestamp string
|
||
|
}
|
||
|
|
||
|
func index(w http.ResponseWriter, r *http.Request) {
|
||
|
page := template.Must(template.New("index").Parse(indexPage))
|
||
|
|
||
|
deadline := time.Date(2024, 12, 1, 0, 0, 0, 0, time.UTC)
|
||
|
timeRemaining := deadline.Sub(time.Now().Round(24 * time.Hour))
|
||
|
|
||
|
book, timestamp := getBookWithTimestamp(timeRemaining)
|
||
|
|
||
|
data := IndexPage{
|
||
|
BookTitle: book,
|
||
|
Timestamp: timestamp.String(),
|
||
|
}
|
||
|
|
||
|
page.Execute(w, data)
|
||
|
}
|
||
|
|
||
|
const indexPage string = `<!doctype html>
|
||
|
<html>
|
||
|
<head>
|
||
|
<meta charset="UTF-8">
|
||
|
<meta name="viewport" content="width=device-width, height=device-height, user-scalable=no, initial-scale=1.0"/>
|
||
|
<title>Stormlight Archive Tracker</title>
|
||
|
<meta name="description" content="UwU"/>
|
||
|
<link rel="canonical" href="https://stormlight.scalio.me"/>
|
||
|
<style>
|
||
|
body {margin: 5% auto; background: #f2f2f2; color: #444444; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.8; text-shadow: 0 1px 0 #ffffff; max-width: 73%;}
|
||
|
code {background: white;}
|
||
|
a {border-bottom: 1px solid #444444; color: #444444; text-decoration: none;}
|
||
|
a:hover {border-bottom: 0;}
|
||
|
</style>
|
||
|
</head>
|
||
|
<body>
|
||
|
<h1>Stormlight Archive Tracker</h1>
|
||
|
<p>
|
||
|
You should be reading <strong>{{.BookTitle}}</strong> and past the <strong>{{.Timestamp}}</strong> mark by the end of the day.
|
||
|
</p>
|
||
|
</body>
|
||
|
</html>`
|