Browse Source

code

Signed-off-by: Christine Dodrill <[email protected]>
mara
Cadey Ratio 4 months ago
parent
commit
ccc6e291fb
  1. 2
      .gitignore
  2. 3
      go.mod
  3. 78
      main.go
  4. 14
      quips.json
  5. 121
      templates/index.html

2
.gitignore

@ -14,4 +14,4 @@
# Dependency directories (remove the comment below to include it)
# vendor/
.DS_Store

3
go.mod

@ -0,0 +1,3 @@
module tulpa.dev/cadey/todayinmarch2020
go 1.16

78
main.go

@ -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))],
})
})
}

14
quips.json

@ -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."
]

121
templates/index.html

@ -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…
Cancel
Save