Use modularity / up to Exercise 1-12
[goproglang.git] / httpserve / httpserve.go
1 package httpserve
2
3 import (
4   "fmt"
5   "log"
6   "net/http"
7   "sync"
8   "strconv"
9   
10   "git.ryanwatkins.me/goproglang/lissajous"
11 )
12
13 var mu sync.Mutex
14 var count int
15
16 func Serve() {
17   http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
18     v := r.URL.Query().Get("cycles")
19     if v != "" {
20       cycles, _ := strconv.Atoi(v)
21       lissajous.Run(w, cycles)
22     } else {
23       cycles := 5
24       lissajous.Run(w, cycles)
25     }
26   })
27   http.HandleFunc("/count", counter)
28   log.Fatal(http.ListenAndServe("localhost:8000", nil))
29 }
30
31 func handler(w http.ResponseWriter, r *http.Request) {
32   fmt.Fprintf(w, "URL.Path = %q\n", r.URL.Path)
33   mu.Lock()
34   count++
35   mu.Unlock()
36 }
37 func counter(w http.ResponseWriter, r *http.Request) {
38   mu.Lock()
39   fmt.Fprintf(w, "Count %d\n", count)
40   mu.Unlock()
41 }