package api import ( "encoding/json" "srs.epita.fr/fic-server/libfic" "github.com/julienschmidt/httprouter" ) func init() { router.GET("/api/events/", apiHandler(getEvents)) router.GET("/api/events.json", apiHandler(getLastEvents)) router.POST("/api/events/", apiHandler(newEvent)) router.DELETE("/api/events/", apiHandler(clearEvents)) router.GET("/api/events/:evid", apiHandler(eventHandler(showEvent))) router.PUT("/api/events/:evid", apiHandler(eventHandler(updateEvent))) router.DELETE("/api/events/:evid", apiHandler(eventHandler(deleteEvent))) } func getEvents(_ httprouter.Params, _ []byte) (interface{}, error) { if evts, err := fic.GetEvents(); err != nil { return nil, err } else { return evts, nil } } func getLastEvents(_ httprouter.Params, _ []byte) (interface{}, error) { if evts, err := fic.GetLastEvents(); err != nil { return nil, err } else { return evts, nil } } func showEvent(event fic.Event, _ []byte) (interface{}, error) { return event, nil } func newEvent(_ httprouter.Params, body []byte) (interface{}, error) { var ue fic.Event if err := json.Unmarshal(body, &ue); err != nil { return nil, err } if event, err := fic.NewEvent(ue.Text, ue.Kind); err != nil { return nil, err } else { return event, nil } } func clearEvents(_ httprouter.Params, _ []byte) (interface{}, error) { return fic.ClearEvents() } func updateEvent(event fic.Event, body []byte) (interface{}, error) { var ue fic.Event if err := json.Unmarshal(body, &ue); err != nil { return nil, err } ue.Id = event.Id if _, err := ue.Update(); err != nil { return nil, err } else { return ue, nil } } func deleteEvent(event fic.Event, _ []byte) (interface{}, error) { return event.Delete() }