Add list to server

This commit is contained in:
Torjus Håkestad 2022-04-20 22:53:41 +02:00
parent a0c06e5615
commit 2739dafe3d
2 changed files with 20 additions and 0 deletions

View File

@ -10,3 +10,7 @@ type ResponseIndex struct {
type ResponseAPIPost struct {
ID string `json:"id"`
}
type ResponseAPIList struct {
IDs []string `json:"ids"`
}

View File

@ -34,6 +34,7 @@ func NewServer(s store.Store) *Server {
r.Get("/", srv.HandlerIndexGet)
r.Route("/api", func(r chi.Router) {
r.Get("/{id}", srv.HandlerAPIGet)
r.Get("/", srv.HandlerAPIList)
r.Post("/", srv.HandlerAPIPost)
})
@ -101,6 +102,7 @@ func (s *Server) HandlerAPIPost(w http.ResponseWriter, r *http.Request) {
}
} else {
// Is not multipart
// TODO: Not working
if mediaType == "application/x-www-form-urlencoded" {
if err := r.ParseForm(); err != nil {
log.Printf("Error parsing form: %s", err)
@ -145,3 +147,17 @@ func (s *Server) HandlerAPIGet(w http.ResponseWriter, r *http.Request) {
log.Panicf("Error writing to client: %s", err)
}
}
func (s *Server) HandlerAPIList(w http.ResponseWriter, r *http.Request) {
ids, err := s.store.List()
if err != nil {
log.Panicf("Error listing store contents: %s", err)
}
resp := &ResponseAPIList{IDs: ids}
encoder := json.NewEncoder(w)
if err := encoder.Encode(resp); err != nil {
log.Panicf("Error encoding response to client: %s", err)
}
}