package api import ( "encoding/json" "io/ioutil" "path" "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 genEventsFile() error { if evts, err := fic.GetLastEvents(); err != nil { return err } else if j, err := json.Marshal(evts); err != nil { return err } else if err := ioutil.WriteFile(path.Join(TeamsDir, "events.json"), j, 0666); err != nil { return err } return nil } 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 { genEventsFile() 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 { genEventsFile() return ue, nil } } func deleteEvent(event fic.Event, _ []byte) (interface{}, error) { if i, err := event.Delete(); err != nil { return i, err } else { genEventsFile() return i, err } }