joelbirchler
2019-12-18 13f7b7c55186c0daeb26c4850f876e5b5f9cf0ec
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package main
 
import (
    "fmt"
    "github.com/gorilla/mux"
    "html/template"
    "log"
    "net/http"
    "time"
)
 
var homeTemplate *template.Template
 
func init() {
    homeTemplate = template.Must(template.ParseFiles("template.html"))
}
 
func listenAndServe(port string, exoplanets *Exoplanets) error {
    r := mux.NewRouter()
 
    r.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        exoplanets.fetch()
        w.WriteHeader(http.StatusOK)
        homeTemplate.Execute(w, exoplanets.List)
    })
 
    r.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) {
        w.WriteHeader(http.StatusOK)
        fmt.Fprint(w, "ok")
    })
 
    srv := &http.Server{
        Handler:      r,
        Addr:         "0.0.0.0:" + port,
        WriteTimeout: 10 * time.Second,
        ReadTimeout:  10 * time.Second,
    }
 
    log.Printf("Listening on :%s", port)
    return srv.ListenAndServe()
}