mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
Update swagger doc. Indicate to user if updated or created
This commit is contained in:
@@ -24,9 +24,9 @@ import (
|
|||||||
func (s *Server) handleRouteCreateOrUpdate(c *gin.Context) {
|
func (s *Server) handleRouteCreateOrUpdate(c *gin.Context) {
|
||||||
ctx := c.MustGet("ctx").(context.Context)
|
ctx := c.MustGet("ctx").(context.Context)
|
||||||
log := common.Logger(ctx)
|
log := common.Logger(ctx)
|
||||||
method := strings.ToLower(c.Request.Method)
|
method := strings.ToUpper(c.Request.Method)
|
||||||
switch method {
|
switch method {
|
||||||
case "post", "put", "patch":
|
case http.MethodPost, http.MethodPut, http.MethodPatch:
|
||||||
default:
|
default:
|
||||||
c.JSON(http.StatusMethodNotAllowed, simpleError(fmt.Errorf(http.StatusText(http.StatusMethodNotAllowed))))
|
c.JSON(http.StatusMethodNotAllowed, simpleError(fmt.Errorf(http.StatusText(http.StatusMethodNotAllowed))))
|
||||||
return
|
return
|
||||||
@@ -48,7 +48,7 @@ func (s *Server) handleRouteCreateOrUpdate(c *gin.Context) {
|
|||||||
|
|
||||||
wroute.Route.AppName = c.MustGet(api.AppName).(string)
|
wroute.Route.AppName = c.MustGet(api.AppName).(string)
|
||||||
|
|
||||||
if method == "put" || method == "patch" {
|
if method == http.MethodPut || method == http.MethodPatch {
|
||||||
p := path.Clean(c.MustGet(api.Path).(string))
|
p := path.Clean(c.MustGet(api.Path).(string))
|
||||||
|
|
||||||
if wroute.Route.Path != "" && wroute.Route.Path != p {
|
if wroute.Route.Path != "" && wroute.Route.Path != p {
|
||||||
@@ -61,14 +61,16 @@ func (s *Server) handleRouteCreateOrUpdate(c *gin.Context) {
|
|||||||
|
|
||||||
wroute.Route.SetDefaults()
|
wroute.Route.SetDefaults()
|
||||||
|
|
||||||
if err = wroute.Validate(method == "post"); err != nil {
|
if err = wroute.Validate(method == http.MethodPost); err != nil {
|
||||||
log.WithError(err).Debug(models.ErrRoutesCreate)
|
log.WithError(err).Debug(models.ErrRoutesCreate)
|
||||||
c.JSON(http.StatusBadRequest, simpleError(err))
|
c.JSON(http.StatusBadRequest, simpleError(err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if method == "post" || method == "put" {
|
//Create the app if it does not exist.
|
||||||
app, err := s.Datastore.GetApp(ctx, wroute.Route.AppName)
|
if method == http.MethodPost || method == http.MethodPut {
|
||||||
|
var app *models.App
|
||||||
|
app, err = s.Datastore.GetApp(ctx, wroute.Route.AppName)
|
||||||
if err != nil && err != models.ErrAppsNotFound {
|
if err != nil && err != models.ErrAppsNotFound {
|
||||||
log.WithError(err).Error(models.ErrAppsGet)
|
log.WithError(err).Error(models.ErrAppsGet)
|
||||||
c.JSON(http.StatusInternalServerError, simpleError(models.ErrAppsGet))
|
c.JSON(http.StatusInternalServerError, simpleError(models.ErrAppsGet))
|
||||||
@@ -108,17 +110,22 @@ func (s *Server) handleRouteCreateOrUpdate(c *gin.Context) {
|
|||||||
|
|
||||||
var route *models.Route
|
var route *models.Route
|
||||||
|
|
||||||
|
var createdOrUpdated int
|
||||||
switch method {
|
switch method {
|
||||||
case "post":
|
case http.MethodPost:
|
||||||
route, err = s.Datastore.InsertRoute(ctx, wroute.Route)
|
route, err = s.Datastore.InsertRoute(ctx, wroute.Route)
|
||||||
case "put":
|
createdOrUpdated = 1
|
||||||
|
case http.MethodPut:
|
||||||
route, err = s.Datastore.UpdateRoute(ctx, wroute.Route)
|
route, err = s.Datastore.UpdateRoute(ctx, wroute.Route)
|
||||||
|
createdOrUpdated = 2
|
||||||
if err == models.ErrRoutesNotFound {
|
if err == models.ErrRoutesNotFound {
|
||||||
// try insert then
|
// try insert then
|
||||||
route, err = s.Datastore.InsertRoute(ctx, wroute.Route)
|
route, err = s.Datastore.InsertRoute(ctx, wroute.Route)
|
||||||
|
createdOrUpdated = 1
|
||||||
}
|
}
|
||||||
case "patch":
|
case http.MethodPatch:
|
||||||
route, err = s.Datastore.UpdateRoute(ctx, wroute.Route)
|
route, err = s.Datastore.UpdateRoute(ctx, wroute.Route)
|
||||||
|
createdOrUpdated = 2
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -128,5 +135,15 @@ func (s *Server) handleRouteCreateOrUpdate(c *gin.Context) {
|
|||||||
|
|
||||||
s.cacheRefresh(route)
|
s.cacheRefresh(route)
|
||||||
|
|
||||||
c.JSON(http.StatusOK, routeResponse{"Route successfully created", route})
|
var msg string
|
||||||
|
var code int
|
||||||
|
switch createdOrUpdated {
|
||||||
|
case 1:
|
||||||
|
msg = "Route successfully created"
|
||||||
|
code = http.StatusCreated
|
||||||
|
case 2:
|
||||||
|
msg = "Route successfully updated"
|
||||||
|
code = http.StatusOK
|
||||||
|
}
|
||||||
|
c.JSON(code, routeResponse{msg, route})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ swagger: '2.0'
|
|||||||
info:
|
info:
|
||||||
title: Oracle Functions
|
title: Oracle Functions
|
||||||
description: The open source serverless platform.
|
description: The open source serverless platform.
|
||||||
version: "0.1.33"
|
version: "0.1.34"
|
||||||
# the domain of the service
|
# the domain of the service
|
||||||
host: "127.0.0.1:8080"
|
host: "127.0.0.1:8080"
|
||||||
# array of all schemes that your API supports
|
# array of all schemes that your API supports
|
||||||
@@ -177,7 +177,7 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/RouteWrapper'
|
$ref: '#/definitions/RouteWrapper'
|
||||||
responses:
|
responses:
|
||||||
200:
|
201:
|
||||||
description: Route created
|
description: Route created
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/RouteWrapper'
|
$ref: '#/definitions/RouteWrapper'
|
||||||
@@ -220,8 +220,47 @@ paths:
|
|||||||
$ref: '#/definitions/Error'
|
$ref: '#/definitions/Error'
|
||||||
|
|
||||||
/apps/{app}/routes/{route}:
|
/apps/{app}/routes/{route}:
|
||||||
|
put:
|
||||||
|
summary: Create a Route if it does not exist. Update if it does. Will also create app if it does not exist.
|
||||||
|
description: Update or Create a route
|
||||||
|
tags:
|
||||||
|
- Routes
|
||||||
|
parameters:
|
||||||
|
- name: app
|
||||||
|
in: path
|
||||||
|
description: name of the app.
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
- name: route
|
||||||
|
in: path
|
||||||
|
description: route path.
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
- name: body
|
||||||
|
in: body
|
||||||
|
description: One route to post.
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/RouteWrapper'
|
||||||
|
responses:
|
||||||
|
200:
|
||||||
|
description: Route updated
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/RouteWrapper'
|
||||||
|
201:
|
||||||
|
description: Route created
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/RouteWrapper'
|
||||||
|
400:
|
||||||
|
description: Invalid route due to parameters being missing or invalid.
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/Error'
|
||||||
|
default:
|
||||||
|
description: Unexpected error
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/Error'
|
||||||
patch:
|
patch:
|
||||||
summary: Update a Route
|
summary: Update a Route, Fails if the route or app does not exist.
|
||||||
description: Update a route
|
description: Update a route
|
||||||
tags:
|
tags:
|
||||||
- Routes
|
- Routes
|
||||||
@@ -252,7 +291,7 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/Error'
|
$ref: '#/definitions/Error'
|
||||||
404:
|
404:
|
||||||
description: App does not exist.
|
description: App/ Route does not exist.
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/definitions/Error'
|
$ref: '#/definitions/Error'
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user