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 { type ResponseAPIPost struct {
ID string `json:"id"` 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.Get("/", srv.HandlerIndexGet)
r.Route("/api", func(r chi.Router) { r.Route("/api", func(r chi.Router) {
r.Get("/{id}", srv.HandlerAPIGet) r.Get("/{id}", srv.HandlerAPIGet)
r.Get("/", srv.HandlerAPIList)
r.Post("/", srv.HandlerAPIPost) r.Post("/", srv.HandlerAPIPost)
}) })
@ -101,6 +102,7 @@ func (s *Server) HandlerAPIPost(w http.ResponseWriter, r *http.Request) {
} }
} else { } else {
// Is not multipart // Is not multipart
// TODO: Not working
if mediaType == "application/x-www-form-urlencoded" { if mediaType == "application/x-www-form-urlencoded" {
if err := r.ParseForm(); err != nil { if err := r.ParseForm(); err != nil {
log.Printf("Error parsing form: %s", err) 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) 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)
}
}