From 1e3d616910b4755f3784231ba5f21c2965cc27b8 Mon Sep 17 00:00:00 2001 From: Pedro Nasser Date: Sat, 30 Jul 2016 18:17:06 -0300 Subject: [PATCH] fixed routes handlers --- api/server/router/routes_create.go | 23 +++++++++++++++-------- api/server/router/routes_get.go | 6 ++++++ api/server/router/routes_update.go | 20 ++++++++++++++++---- 3 files changed, 37 insertions(+), 12 deletions(-) diff --git a/api/server/router/routes_create.go b/api/server/router/routes_create.go index 5733a081e..53d8bf022 100644 --- a/api/server/router/routes_create.go +++ b/api/server/router/routes_create.go @@ -12,37 +12,44 @@ func handleRouteCreate(c *gin.Context) { store := c.MustGet("store").(models.Datastore) log := c.MustGet("log").(logrus.FieldLogger) - route := &models.Route{} + var wroute models.RouteWrapper - err := c.BindJSON(route) + err := c.BindJSON(&wroute) if err != nil { log.WithError(err).Error(models.ErrInvalidJSON) c.JSON(http.StatusBadRequest, simpleError(models.ErrInvalidJSON)) return } - if route == nil { + if wroute.Route == nil { log.WithError(err).Error(models.ErrInvalidJSON) c.JSON(http.StatusBadRequest, simpleError(models.ErrRoutesMissingNew)) return } - route.AppName = c.Param("app") + wroute.Route.AppName = c.Param("app") - if err := route.Validate(); err != nil { + if err := wroute.Validate(); err != nil { log.Error(err) c.JSON(http.StatusInternalServerError, simpleError(err)) return } - app, err := store.GetApp(route.AppName) + app, err := store.GetApp(wroute.Route.AppName) if err != nil { log.WithError(err).Error(models.ErrAppsGet) c.JSON(http.StatusInternalServerError, simpleError(models.ErrAppsGet)) return } if app == nil { - app, err = store.StoreApp(&models.App{Name: route.AppName}) + newapp := &models.App{Name: wroute.Route.AppName} + if err := newapp.Validate(); err != nil { + log.Error(err) + c.JSON(http.StatusInternalServerError, simpleError(err)) + return + } + + app, err = store.StoreApp(newapp) if err != nil { log.WithError(err).Error(models.ErrAppsCreate) c.JSON(http.StatusInternalServerError, simpleError(models.ErrAppsCreate)) @@ -50,7 +57,7 @@ func handleRouteCreate(c *gin.Context) { } } - route, err = store.StoreRoute(route) + route, err := store.StoreRoute(wroute.Route) if err != nil { log.WithError(err).Error(models.ErrRoutesCreate) c.JSON(http.StatusInternalServerError, simpleError(models.ErrRoutesCreate)) diff --git a/api/server/router/routes_get.go b/api/server/router/routes_get.go index d6f1dfe7d..0c9e747f3 100644 --- a/api/server/router/routes_get.go +++ b/api/server/router/routes_get.go @@ -22,6 +22,12 @@ func handleRouteGet(c *gin.Context) { return } + if route == nil { + log.Error(models.ErrRoutesNotFound) + c.JSON(http.StatusNotFound, simpleError(models.ErrRoutesNotFound)) + return + } + log.WithFields(logrus.Fields{"route": route}).Debug("Got route") c.JSON(http.StatusOK, &models.RouteWrapper{route}) diff --git a/api/server/router/routes_update.go b/api/server/router/routes_update.go index 188c33252..92f9170a3 100644 --- a/api/server/router/routes_update.go +++ b/api/server/router/routes_update.go @@ -12,17 +12,29 @@ func handleRouteUpdate(c *gin.Context) { store := c.MustGet("store").(models.Datastore) log := c.MustGet("log").(logrus.FieldLogger) - wroute := &models.RouteWrapper{} - appName := c.Param("app") + var wroute models.RouteWrapper - err := c.BindJSON(wroute) + err := c.BindJSON(&wroute) if err != nil { log.WithError(err).Debug(models.ErrInvalidJSON) c.JSON(http.StatusBadRequest, simpleError(models.ErrInvalidJSON)) return } - wroute.Route.AppName = appName + if wroute.Route == nil { + log.WithError(err).Error(models.ErrInvalidJSON) + c.JSON(http.StatusBadRequest, simpleError(models.ErrRoutesMissingNew)) + return + } + + wroute.Route.AppName = c.Param("app") + wroute.Route.Name = c.Param("route") + + if err := wroute.Validate(); err != nil { + log.Error(err) + c.JSON(http.StatusInternalServerError, simpleError(err)) + return + } route, err := store.StoreRoute(wroute.Route) if err != nil {