code
Signed-off-by: Christine Dodrill <me@christine.website>
This commit is contained in:
parent
ab279fa431
commit
ccc6e291fb
|
@ -14,4 +14,4 @@
|
|||
|
||||
# Dependency directories (remove the comment below to include it)
|
||||
# vendor/
|
||||
|
||||
.DS_Store
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"html/template"
|
||||
"log"
|
||||
"math/rand"
|
||||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
port = flag.String("port", "23698", "TCP port to listen on")
|
||||
sockPath = flag.String("socket", "", "Unix socket to listen on")
|
||||
|
||||
//go:embed templates/* quips.json
|
||||
content embed.FS
|
||||
|
||||
quips []string
|
||||
)
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
|
||||
tmpl := template.Must(template.ParseFS(content, "templates/index.html"))
|
||||
|
||||
fin, err := content.Open("quips.json")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
err = json.NewDecoder(fin).Decode(&quips)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
mux := http.NewServeMux()
|
||||
mux.Handle("/", index(tmpl))
|
||||
|
||||
var l net.Listener
|
||||
if *sockPath != "" {
|
||||
os.Remove(*sockPath)
|
||||
l, err = net.Listen("unix", *sockPath)
|
||||
} else {
|
||||
l, err = net.Listen("tcp", ":"+*port)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
srv := &http.Server{
|
||||
Handler: mux,
|
||||
}
|
||||
log.Fatal(srv.Serve(l))
|
||||
}
|
||||
|
||||
func index(tmpl *template.Template) http.Handler {
|
||||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Add("Content-Type", "text/html")
|
||||
|
||||
then := time.Date(2020, time.March, 1, 0, 0, 0, 0, time.UTC)
|
||||
now := time.Now().UTC()
|
||||
dur := now.Sub(then)
|
||||
|
||||
tmpl.Execute(w, struct {
|
||||
Day int
|
||||
Quip string
|
||||
}{
|
||||
Day: int(dur.Hours() / 24),
|
||||
Quip: quips[rand.Intn(len(quips))],
|
||||
})
|
||||
})
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
[
|
||||
"Is today gonna be the day that time comes back to us?",
|
||||
"The year that's felt like a decade.",
|
||||
"How deep are you into your Netflix backlog?",
|
||||
"Now without JavaScript!",
|
||||
"Green Leader, standing by.",
|
||||
"We've strayed into a zone with a high magical index.",
|
||||
"Each second that goes by feels like an eternity and nothing.",
|
||||
"Never enter an arsekicking contest with a systems developer.",
|
||||
"Developers didn't kill ordinary people because a) they seldom noticed them, b) it wasn't considered sporting and c) who'd do all the cooking and growing food and things.",
|
||||
"Some people think this is paranoia, but it isn't. Paranoids only think everyone is out to get them. Developers know it.",
|
||||
"Weather forecast for tomorrow: RIVERS OF BLOOD ALL DAY",
|
||||
"A systems programmer will know what to do when society breaks down, because the systems programmer already lives in a world without law."
|
||||
]
|
|
@ -0,0 +1,121 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>What Day of March, 2020 Is It?</title>
|
||||
<style>
|
||||
main {
|
||||
font-family: monospace, monospace;
|
||||
max-width: 38rem;
|
||||
padding: 2rem 0;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
@media only screen and (max-device-width: 736px) {
|
||||
main {
|
||||
padding: 0rem;
|
||||
}
|
||||
}
|
||||
|
||||
::selection {
|
||||
background: #d3869b;
|
||||
}
|
||||
|
||||
body {
|
||||
background: #282828;
|
||||
color: #ebdbb2;
|
||||
}
|
||||
|
||||
pre {
|
||||
background-color: #3c3836;
|
||||
padding: 1em;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
a,
|
||||
a:active,
|
||||
a:visited {
|
||||
color: #b16286;
|
||||
background-color: #1d2021;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5 {
|
||||
margin-bottom: .1rem;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border-left: 1px solid #bdae93;
|
||||
margin: 0.5em 10px;
|
||||
padding: 0.5em 10px;
|
||||
}
|
||||
|
||||
footer {
|
||||
align: center;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: light) {
|
||||
body {
|
||||
background: #fbf1c7;
|
||||
color: #3c3836;
|
||||
}
|
||||
|
||||
pre {
|
||||
background-color: #ebdbb2;
|
||||
padding: 1em;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
a,
|
||||
a:active,
|
||||
a:visited {
|
||||
color: #b16286;
|
||||
background-color: #f9f5d7;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5 {
|
||||
margin-bottom: .1rem;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border-left: 1px solid #655c54;
|
||||
margin: 0.5em 10px;
|
||||
padding: 0.5em 10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
</head>
|
||||
|
||||
<body id="top">
|
||||
<center>
|
||||
<main>
|
||||
<big>Today is March <big>{{.Day}}</big>, 2020</big>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<p>{{.Quip}}</p>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<footer>
|
||||
<p>From <a href="https://christine.website">Within</a> - <a
|
||||
href="https://twitter.com/theprincessxena">@theprincessxena</a> - <a
|
||||
href="https://tulpa.dev/cadey/todayinmarch2020">Source Code</a></p>
|
||||
</footer>
|
||||
</main>
|
||||
</center>
|
||||
</body>
|
||||
|
||||
</html>
|
Loading…
Reference in New Issue