/
server.go
82 lines (67 loc) · 2.21 KB
/
server.go
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package main
import (
"code.google.com/p/gorest"
"log"
"net/http"
"strconv"
)
type WalkerType struct {
Uid string
User string
Pwd string
Phone string
Email string
Postcode string
//LatLng string
}
const lenSearchPath = len("/walkers")
var walker1 = WalkerType{"1", "Pam Beasley", "123", "(819) 456-1234", "asd@asd.com", "k1y4x8"}
var walker2 = WalkerType{"2", "Jim Halpert", "234", "(613) 123-4563", "TEST@test.com", "k2b8e5"}
var walkerData = []WalkerType{walker1, walker2}
func main() {
gorest.RegisterService(new(WalkerService))
http.Handle("/api/", gorest.Handle())
http.Handle("/", http.FileServer(http.Dir("public")))
// http.HandleFunc("/walkers", ListWalkers)
err := http.ListenAndServe(":8080", nil)
if err != nil {
log.Printf("Error in webserver: %v", err)
}
}
type WalkerService struct {
gorest.RestService `root:"/api/" consumes:"application/json" produces:"application/json"`
listWalkers gorest.EndPoint `method:"GET" path:"/walkers" output:"[]WalkerType"`
getWalker gorest.EndPoint `method:"GET" path:"/walkers/{email:string}" output:"WalkerType"`
addWalker gorest.EndPoint `method:"POST" path:"/walkers" postdata:"WalkerType"`
updateWalker gorest.EndPoint `method:"PUT" path:"/walkers/{uid:string}" postdata:"WalkerType"`
}
// ListWalkers returns the requested list of walkers
func (serv WalkerService) ListWalkers() []WalkerType {
//return the walkers in a 5km radius around the postcode
//test := []string{"hello", "there"}
serv.ResponseBuilder().CacheMaxAge(0)
return walkerData
}
// AddWalker adds the Walker obj posted by the client
func (serv WalkerService) AddWalker(postedObj WalkerType) {
if postedObj.Uid != "" {
serv.ResponseBuilder().SetResponseCode(400)
return
}
postedObj.Uid = strconv.Itoa(len(walkerData) + 1)
walkerData = append(walkerData, postedObj)
log.Printf("Walker: %+v", postedObj)
}
func (serv WalkerService) GetWalker(email string) (walker WalkerType) {
for _, value := range walkerData {
if value.Email == email {
log.Printf("Walker: %+v", value)
walker = value
return
}
}
serv.ResponseBuilder().SetResponseCode(404).Overide(true)
return
}
func (serv WalkerService) UpdateWalker(postedObj WalkerType, uid string) {
}