diff options
| author | Nikolaus Gotsche <n@softwarefools.com> | 2017-10-02 03:00:34 +0200 |
|---|---|---|
| committer | Nikolaus Gotsche <n@softwarefools.com> | 2017-10-02 03:00:34 +0200 |
| commit | b4d150602df5b9a61a3d3b1084524c9317c55cde (patch) | |
| tree | ff02fad70fb2306cf5486a104b448535294b90b2 /jsonrest.go | |
| parent | 7a38dbeffad2899a6dab74ec9a491e7e7807ba9b (diff) | |
iengine.go - Here comes all the Mapcration and Action calculus
adde maps and stuff
Diffstat (limited to 'jsonrest.go')
| -rw-r--r-- | jsonrest.go | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/jsonrest.go b/jsonrest.go deleted file mode 100644 index e6e948e..0000000 --- a/jsonrest.go +++ /dev/null @@ -1,96 +0,0 @@ -package main - -import ( - "net/http" - "log" - "sync" - "github.com/ant0ine/go-json-rest/rest" -) - -func main() { - api := rest.NewApi() - api.Use(rest.DefaultDevStack...) -// api.SetApp(rest.AppSimple(func(w rest.ResponseWriter, r *rest.Request) { -// w.WriteJson(map[string]string{"Body": "Hello World!"}) -// })) -// log.Fatal(http.ListenAndServe(":8086", api.MakeHandler())) - router, err := rest.MakeRouter( - rest.Get("/countries", GetAllCountries), - rest.Post("/countries", PostCountry), - rest.Get("/countries/:code", GetCountry), - rest.Delete("/countries/:code", DeleteCountry), - ) - if err != nil{ - log.Fatal(err) - } - api.SetApp(router) - log.Fatal(http.ListenAndServe(":8086", api.MakeHandler())) -} - -type Country struct { - Code string - Name string -} - -var store = map[string]*Country{} - -var lock = sync.RWMutex{} - -func GetCountry(w rest.ResponseWriter, r *rest.Request) { - code := r.PathParam("code") - - lock.RLock() - var country *Country - if store[code] != nil { - country = &Country{} - *country = *store[code] - } - lock.RUnlock() - if country == nil { - rest.NotFound(w, r) - return - } - w.WriteJson(country) - -} - -func GetAllCountries(w rest.ResponseWriter, r *rest.Request) { - lock.RLock() - countries := make([]Country, len(store)) - i := 0 - for _, country := range store { - countries[i] = *country - i++ - } - lock.RUnlock() - w.WriteJson(&countries) -} - -func PostCountry(w rest.ResponseWriter, r *rest.Request) { - country := Country{} - err := r.DecodeJsonPayload(&country) - if err != nil { - rest.Error(w, err.Error(), http.StatusInternalServerError) - return - } - if country.Code == "" { - rest.Error(w, "country code required", 400) - return - } - if country.Name == "" { - rest.Error(w, "country name required", 400) - return - } - lock.Lock() - store[country.Code] = &country - lock.Unlock() - w.WriteJson(&country) -} - -func DeleteCountry(w rest.ResponseWriter, r *rest.Request) { - code := r.PathParam("code") - lock.Lock() - delete(store, code) - lock.Unlock() - w.WriteHeader(http.StatusOK) -} |
