blob: 27fb2e0434b26c01a24c9a8d71de7b62322d065e [file] [log] [blame]
Serge Bazanski5e695e82021-03-07 14:29:40 +00001package main
2
3import (
4 "flag"
5 "fmt"
6 "math/rand"
7 "net/http"
8 "time"
9
10 "github.com/golang/glog"
11)
12
13var (
14 flagPostgres string
15 flagListen string
16)
17
18func init() {
19 flag.Set("logtostderr", "true")
20}
21
22func handleRobots(w http.ResponseWriter, r *http.Request) {
23 // Prevent indexing by any (honest) search engine.
24 fmt.Fprintf(w, "User-agent: *\nDisallow: /\n")
25}
26
27func main() {
28 flag.StringVar(&flagPostgres, "postgres", "", "Postgres connection string (see lib/pq docs)")
29 flag.StringVar(&flagListen, "listen", "127.0.0.1:8080", "Address to listen at for public HTTP traffic")
30 flag.Parse()
31
32 rand.Seed(time.Now().Unix())
33
34 a, err := newApp(flagPostgres)
35 if err != nil {
36 glog.Exitf("newApp: %v", err)
37 }
38
39 http.HandleFunc("/robots.txt", handleRobots)
40
41 http.HandleFunc("/terms.json", a.handleTermsJson)
42 http.HandleFunc("/term.json/", a.handleTermJson)
43 http.HandleFunc("/randomterm.json/", a.handleRandomTermJson)
44
45 http.HandleFunc("/terms", a.handleTerms)
46 http.HandleFunc("/", a.handleTerms)
47
48 http.HandleFunc("/term/", a.handleTerm)
49
50 glog.Infof("Listening at %q", flagListen)
51 if err := http.ListenAndServe(flagListen, nil); err != nil {
52 glog.Exit(err)
53 }
54}