diff --git a/pkg/server/handlers.go b/pkg/server/handlers.go index f341270..78b83c5 100644 --- a/pkg/server/handlers.go +++ b/pkg/server/handlers.go @@ -10,6 +10,8 @@ import ( "log" "net/http" "time" + + "github.com/go-chi/chi/v5" ) // errorResponse represents an error response returned by the API @@ -65,7 +67,7 @@ func NewHandler(im manager.InstanceManager, cfg config.AppConfig) *Handler { // getInstance retrieves an instance by name from the request query parameters func (h *Handler) getInstance(r *http.Request) (*instance.Instance, error) { - name := r.URL.Query().Get("name") + name := chi.URLParam(r, "name") validatedName, err := validation.ValidateInstanceName(name) if err != nil { return nil, fmt.Errorf("invalid instance name: %w", err) diff --git a/pkg/server/handlers_instances.go b/pkg/server/handlers_instances.go index e236049..24fe3e7 100644 --- a/pkg/server/handlers_instances.go +++ b/pkg/server/handlers_instances.go @@ -9,6 +9,8 @@ import ( "net/http" "strconv" "strings" + + "github.com/go-chi/chi/v5" ) // ListInstances godoc @@ -47,7 +49,7 @@ func (h *Handler) ListInstances() http.HandlerFunc { // @Router /instances/{name} [post] func (h *Handler) CreateInstance() http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - name := r.URL.Query().Get("name") + name := chi.URLParam(r, "name") validatedName, err := validation.ValidateInstanceName(name) if err != nil { writeError(w, http.StatusBadRequest, "invalid_instance_name", err.Error()) @@ -83,7 +85,7 @@ func (h *Handler) CreateInstance() http.HandlerFunc { // @Router /instances/{name} [get] func (h *Handler) GetInstance() http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - name := r.URL.Query().Get("name") + name := chi.URLParam(r, "name") validatedName, err := validation.ValidateInstanceName(name) if err != nil { writeError(w, http.StatusBadRequest, "invalid_instance_name", err.Error()) @@ -115,7 +117,7 @@ func (h *Handler) GetInstance() http.HandlerFunc { // @Router /instances/{name} [put] func (h *Handler) UpdateInstance() http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - name := r.URL.Query().Get("name") + name := chi.URLParam(r, "name") validatedName, err := validation.ValidateInstanceName(name) if err != nil { writeError(w, http.StatusBadRequest, "invalid_instance_name", err.Error()) @@ -151,7 +153,7 @@ func (h *Handler) UpdateInstance() http.HandlerFunc { // @Router /instances/{name}/start [post] func (h *Handler) StartInstance() http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - name := r.URL.Query().Get("name") + name := chi.URLParam(r, "name") validatedName, err := validation.ValidateInstanceName(name) if err != nil { writeError(w, http.StatusBadRequest, "invalid_instance_name", err.Error()) @@ -187,7 +189,7 @@ func (h *Handler) StartInstance() http.HandlerFunc { // @Router /instances/{name}/stop [post] func (h *Handler) StopInstance() http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - name := r.URL.Query().Get("name") + name := chi.URLParam(r, "name") validatedName, err := validation.ValidateInstanceName(name) if err != nil { writeError(w, http.StatusBadRequest, "invalid_instance_name", err.Error()) @@ -217,7 +219,7 @@ func (h *Handler) StopInstance() http.HandlerFunc { // @Router /instances/{name}/restart [post] func (h *Handler) RestartInstance() http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - name := r.URL.Query().Get("name") + name := chi.URLParam(r, "name") validatedName, err := validation.ValidateInstanceName(name) if err != nil { writeError(w, http.StatusBadRequest, "invalid_instance_name", err.Error()) @@ -246,7 +248,7 @@ func (h *Handler) RestartInstance() http.HandlerFunc { // @Router /instances/{name} [delete] func (h *Handler) DeleteInstance() http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - name := r.URL.Query().Get("name") + name := chi.URLParam(r, "name") validatedName, err := validation.ValidateInstanceName(name) if err != nil { writeError(w, http.StatusBadRequest, "invalid_instance_name", err.Error()) @@ -276,7 +278,7 @@ func (h *Handler) DeleteInstance() http.HandlerFunc { // @Router /instances/{name}/logs [get] func (h *Handler) GetInstanceLogs() http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - name := r.URL.Query().Get("name") + name := chi.URLParam(r, "name") validatedName, err := validation.ValidateInstanceName(name) if err != nil { writeError(w, http.StatusBadRequest, "invalid_instance_name", err.Error())