fix: update voki requests/responses à v3
This commit is contained in:
parent
b4529e8102
commit
7bc4eed8ae
20 changed files with 169 additions and 175 deletions
|
@ -4,7 +4,7 @@ import (
|
|||
"net/http"
|
||||
"sort"
|
||||
|
||||
"codeberg.org/vlbeaudoin/pave"
|
||||
"codeberg.org/vlbeaudoin/pave/v2"
|
||||
"git.agecem.com/agecem/agecem-org/config"
|
||||
"git.agecem.com/agecem/agecem-org/media"
|
||||
"github.com/labstack/echo/v4"
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
"context"
|
||||
"net/http"
|
||||
|
||||
"codeberg.org/vlbeaudoin/voki/v3"
|
||||
"git.agecem.com/agecem/agecem-org/apirequest"
|
||||
"git.agecem.com/agecem/agecem-org/apiresponse"
|
||||
"github.com/labstack/echo/v4"
|
||||
|
@ -17,9 +18,9 @@ func (h *V1Handler) V1BucketsGET(c echo.Context) error {
|
|||
|
||||
if !request.Complete() {
|
||||
response.Message = "Incomplete V1BucketsGET request received"
|
||||
response.StatusCode = http.StatusBadRequest
|
||||
response.SetStatusCode(http.StatusBadRequest)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
var buckets = make(map[string]string)
|
||||
|
@ -27,11 +28,10 @@ func (h *V1Handler) V1BucketsGET(c echo.Context) error {
|
|||
for bucket_name, bucket_display_name := range h.Config.Server.Documents.Buckets {
|
||||
exists, err := h.MediaClient.MinioClient.BucketExists(context.Background(), bucket_name)
|
||||
if err != nil {
|
||||
response.StatusCode = http.StatusInternalServerError
|
||||
response.Message = "Error during minio#BucketExists"
|
||||
// response.Error = err.Error()
|
||||
response.SetStatusCode(http.StatusInternalServerError)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
if exists {
|
||||
|
@ -39,11 +39,11 @@ func (h *V1Handler) V1BucketsGET(c echo.Context) error {
|
|||
}
|
||||
}
|
||||
|
||||
response.StatusCode = http.StatusOK
|
||||
response.SetStatusCode(http.StatusOK)
|
||||
response.Message = "Buckets list successful"
|
||||
response.Data.Buckets = buckets
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
func (h *V1Handler) V1BucketGET(c echo.Context) error {
|
||||
|
@ -54,9 +54,9 @@ func (h *V1Handler) V1BucketGET(c echo.Context) error {
|
|||
|
||||
if !request.Complete() {
|
||||
response.Message = "Incomplete V1BucketGET request received"
|
||||
response.StatusCode = http.StatusBadRequest
|
||||
response.SetStatusCode(http.StatusBadRequest)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
allowed := false
|
||||
|
@ -67,7 +67,8 @@ func (h *V1Handler) V1BucketGET(c echo.Context) error {
|
|||
}
|
||||
|
||||
if !allowed {
|
||||
return c.JSON(apiresponse.NotFoundResponse())
|
||||
response := voki.ResponseNotFound{}
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
|
@ -76,33 +77,34 @@ func (h *V1Handler) V1BucketGET(c echo.Context) error {
|
|||
|
||||
exists, err := h.MediaClient.MinioClient.BucketExists(ctx, request.Params.Bucket)
|
||||
if err != nil {
|
||||
response.StatusCode = http.StatusInternalServerError
|
||||
response.Message = "Error during minio#BucketExists"
|
||||
response.SetStatusCode(http.StatusInternalServerError)
|
||||
response.Error = err.Error()
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
if !exists {
|
||||
return c.JSON(apiresponse.NotFoundResponse())
|
||||
response := voki.ResponseNotFound{}
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
objectCh := h.MediaClient.MinioClient.ListObjects(ctx, request.Params.Bucket, minio.ListObjectsOptions{})
|
||||
for object := range objectCh {
|
||||
if object.Err != nil {
|
||||
response.StatusCode = http.StatusInternalServerError
|
||||
response.Message = "Error during minio#ListObjects"
|
||||
response.SetStatusCode(http.StatusInternalServerError)
|
||||
//TODO make sure this is safe
|
||||
//response.Error = object.Err.Error()
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
response.Data.Keys = append(response.Data.Keys, object.Key)
|
||||
}
|
||||
|
||||
response.StatusCode = http.StatusOK
|
||||
response.Message = "V1BucketRead ok"
|
||||
response.SetStatusCode(http.StatusOK)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import (
|
|||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"codeberg.org/vlbeaudoin/voki/v3"
|
||||
"git.agecem.com/agecem/agecem-org/apirequest"
|
||||
"git.agecem.com/agecem/agecem-org/apiresponse"
|
||||
"github.com/labstack/echo/v4"
|
||||
|
@ -34,28 +35,29 @@ func (h *V1Handler) V1DocumentsPOST(c echo.Context) (err error) {
|
|||
}
|
||||
|
||||
if !allowed {
|
||||
return c.JSON(apiresponse.NotFoundResponse())
|
||||
response := voki.ResponseNotFound{}
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
form, err := c.MultipartForm()
|
||||
if err != nil {
|
||||
response.Message = fmt.Sprintf("Téléversement invalide: %s", err)
|
||||
response.StatusCode = http.StatusBadRequest
|
||||
response.SetStatusCode(http.StatusBadRequest)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
if form == nil {
|
||||
response.Message = "MultipartForm pointe vers une addresse mémoire nil"
|
||||
response.StatusCode = http.StatusBadRequest
|
||||
response.SetStatusCode(http.StatusBadRequest)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
if len(form.File) == 0 {
|
||||
response.Message = "Veuillez sélectionner au moins 1 document à téléverser"
|
||||
response.StatusCode = http.StatusBadRequest
|
||||
response.SetStatusCode(http.StatusBadRequest)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
for inputName, inputFileHeaders := range form.File {
|
||||
|
@ -66,21 +68,23 @@ func (h *V1Handler) V1DocumentsPOST(c echo.Context) (err error) {
|
|||
|
||||
if request.Data.Documents == nil {
|
||||
response.Message = "Impossible d'obtenir les documents depuis le formulaire"
|
||||
response.StatusCode = http.StatusBadRequest
|
||||
response.SetStatusCode(http.StatusBadRequest)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
if !request.Complete() {
|
||||
response.Message = "Requête V1DocumentsPOST incomplète reçue"
|
||||
response.StatusCode = http.StatusBadRequest
|
||||
response.SetStatusCode(http.StatusBadRequest)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
response.StatusCode, response.Message = h.MediaClient.UploadFormFiles(request.Params.Bucket, request.Data.Documents)
|
||||
var code int
|
||||
code, response.Message = h.MediaClient.UploadFormFiles(request.Params.Bucket, request.Data.Documents)
|
||||
response.SetStatusCode(code)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
// V1DocumentPOST permet d'ajouter un object dans un bucket, par multipart/form-data
|
||||
|
@ -92,11 +96,11 @@ func (h *V1Handler) V1DocumentPOST(c echo.Context) (err error) {
|
|||
|
||||
request.Data.Document, err = c.FormFile("document")
|
||||
if err != nil {
|
||||
response.StatusCode = http.StatusBadRequest
|
||||
response.SetStatusCode(http.StatusBadRequest)
|
||||
response.Message = "Error during HandleV1DocumentCreate's echo#Context.FormFile"
|
||||
response.Error = err.Error()
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
allowed := false
|
||||
|
@ -107,14 +111,15 @@ func (h *V1Handler) V1DocumentPOST(c echo.Context) (err error) {
|
|||
}
|
||||
|
||||
if !allowed {
|
||||
return c.JSON(apiresponse.NotFoundResponse())
|
||||
response := voki.ResponseNotFound{}
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
if !request.Complete() {
|
||||
response.Message = "Incomplete V1DocumentPOST request received"
|
||||
response.StatusCode = http.StatusBadRequest
|
||||
response.SetStatusCode(http.StatusBadRequest)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
|
@ -123,11 +128,11 @@ func (h *V1Handler) V1DocumentPOST(c echo.Context) (err error) {
|
|||
|
||||
src, err := request.Data.Document.Open()
|
||||
if err != nil {
|
||||
response.StatusCode = http.StatusBadRequest
|
||||
response.SetStatusCode(http.StatusBadRequest)
|
||||
response.Message = "Error during form_file.Open()"
|
||||
response.Error = err.Error()
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
defer src.Close()
|
||||
|
||||
|
@ -135,20 +140,20 @@ func (h *V1Handler) V1DocumentPOST(c echo.Context) (err error) {
|
|||
ContentType: request.Data.Document.Header.Get("Content-Type"),
|
||||
})
|
||||
if err != nil {
|
||||
response.StatusCode = http.StatusInternalServerError
|
||||
response.SetStatusCode(http.StatusInternalServerError)
|
||||
response.Message = "Error during minio#PutObject"
|
||||
//response.Error = err.Error()
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
response.StatusCode = http.StatusOK
|
||||
response.SetStatusCode(http.StatusOK)
|
||||
response.Message = "ok"
|
||||
response.Data.Bucket = info.Bucket
|
||||
response.Data.Key = info.Key
|
||||
response.Data.Size = info.Size
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
// V1DocumentGET permet de lire le contenu d'un fichier et protentiellement de le télécharger
|
||||
|
@ -164,7 +169,8 @@ func (h *V1Handler) V1DocumentGET(c echo.Context) error {
|
|||
}
|
||||
|
||||
if !allowed {
|
||||
return c.JSON(apiresponse.NotFoundResponse())
|
||||
response := voki.ResponseNotFound{}
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
|
@ -177,7 +183,8 @@ func (h *V1Handler) V1DocumentGET(c echo.Context) error {
|
|||
}
|
||||
|
||||
if !bucket_exists {
|
||||
return c.JSON(apiresponse.NotFoundResponse())
|
||||
response := voki.ResponseNotFound{}
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
document_info, err := h.MediaClient.MinioClient.StatObject(ctx, bucket, document, minio.StatObjectOptions{})
|
||||
|
@ -185,7 +192,8 @@ func (h *V1Handler) V1DocumentGET(c echo.Context) error {
|
|||
if err != nil {
|
||||
if err.Error() == "The specified key does not exist." {
|
||||
|
||||
return c.JSON(apiresponse.NotFoundResponse())
|
||||
response := voki.ResponseNotFound{}
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
return c.JSON(http.StatusInternalServerError, map[string]interface{}{
|
||||
|
@ -223,14 +231,15 @@ func (h *V1Handler) V1DocumentDELETE(c echo.Context) error {
|
|||
}
|
||||
|
||||
if !allowed {
|
||||
return c.JSON(apiresponse.NotFoundResponse())
|
||||
response := voki.ResponseNotFound{}
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
if !request.Complete() {
|
||||
response.Message = "Incomplete V1DocumentDELETE request received"
|
||||
response.StatusCode = http.StatusBadRequest
|
||||
response.SetStatusCode(http.StatusBadRequest)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
|
@ -243,21 +252,23 @@ func (h *V1Handler) V1DocumentDELETE(c echo.Context) error {
|
|||
}
|
||||
|
||||
if !bucket_exists {
|
||||
return c.JSON(apiresponse.NotFoundResponse())
|
||||
response := voki.ResponseNotFound{}
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
document_info, err := h.MediaClient.MinioClient.StatObject(ctx, request.Params.Bucket, request.Params.Document, minio.StatObjectOptions{})
|
||||
if err != nil {
|
||||
if err.Error() == "The specified key does not exist." {
|
||||
|
||||
return c.JSON(apiresponse.NotFoundResponse())
|
||||
response := voki.ResponseNotFound{}
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
//response.Error = err.Error()
|
||||
response.Message = "Error during minio#StatObject"
|
||||
response.StatusCode = http.StatusInternalServerError
|
||||
response.SetStatusCode(http.StatusInternalServerError)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
//TODO Add error validation
|
||||
|
@ -267,15 +278,15 @@ func (h *V1Handler) V1DocumentDELETE(c echo.Context) error {
|
|||
if err != nil {
|
||||
//response.Error = err.Error()
|
||||
response.Message = "Error during minio#RemoveObject"
|
||||
response.StatusCode = http.StatusInternalServerError
|
||||
response.SetStatusCode(http.StatusInternalServerError)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
response.Message = "Document deleted"
|
||||
response.StatusCode = http.StatusOK
|
||||
response.SetStatusCode(http.StatusOK)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
// V1DocumentKeyPUT
|
||||
|
@ -289,25 +300,25 @@ func (h *V1Handler) V1DocumentKeyPUT(c echo.Context) (err error) {
|
|||
var newKey string
|
||||
err = c.Bind(&newKey)
|
||||
if err != nil {
|
||||
response.StatusCode = http.StatusBadRequest
|
||||
response.SetStatusCode(http.StatusBadRequest)
|
||||
response.Message = err.Error()
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
request, err = apirequest.NewV1DocumentKeyPUT(bucket, document, newKey)
|
||||
if err != nil {
|
||||
response.StatusCode = http.StatusBadRequest
|
||||
response.SetStatusCode(http.StatusBadRequest)
|
||||
response.Message = err.Error()
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
if !request.Complete() {
|
||||
response.StatusCode = http.StatusBadRequest
|
||||
response.SetStatusCode(http.StatusBadRequest)
|
||||
response.Message = "Incomplete V1DocumentKeyPUT request received"
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
var allowed bool
|
||||
|
@ -318,7 +329,8 @@ func (h *V1Handler) V1DocumentKeyPUT(c echo.Context) (err error) {
|
|||
}
|
||||
|
||||
if !allowed {
|
||||
return c.JSON(apiresponse.NotFoundResponse())
|
||||
response := voki.ResponseNotFound{}
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
|
@ -330,7 +342,8 @@ func (h *V1Handler) V1DocumentKeyPUT(c echo.Context) (err error) {
|
|||
}
|
||||
|
||||
if !bucketExists {
|
||||
return c.JSON(apiresponse.NotFoundResponse())
|
||||
response := voki.ResponseNotFound{}
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
// Check source object exists
|
||||
|
@ -338,13 +351,14 @@ func (h *V1Handler) V1DocumentKeyPUT(c echo.Context) (err error) {
|
|||
if _, err := h.MediaClient.MinioClient.StatObject(ctx, request.Params.Bucket, request.Params.Document, minio.StatObjectOptions{}); err != nil {
|
||||
if err.Error() == "The specified key does not exist." {
|
||||
|
||||
return c.JSON(apiresponse.NotFoundResponse())
|
||||
response := voki.ResponseNotFound{}
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
response.Message = fmt.Sprintf("Could not obtain information on %s/%s", request.Params.Bucket, request.Params.Document)
|
||||
response.StatusCode = http.StatusInternalServerError
|
||||
response.SetStatusCode(http.StatusInternalServerError)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
// Copy object to newKey
|
||||
|
@ -353,34 +367,34 @@ func (h *V1Handler) V1DocumentKeyPUT(c echo.Context) (err error) {
|
|||
minio.CopyDestOptions{Bucket: request.Params.Bucket, Object: request.Data.NewKey},
|
||||
minio.CopySrcOptions{Bucket: request.Params.Bucket, Object: request.Params.Document},
|
||||
); err != nil {
|
||||
response.StatusCode = http.StatusInternalServerError
|
||||
response.SetStatusCode(http.StatusInternalServerError)
|
||||
response.Message = "Impossible de copier un document pour le renommer"
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
// Verify copy was successful
|
||||
if _, err := h.MediaClient.MinioClient.StatObject(ctx,
|
||||
request.Params.Bucket, request.Data.NewKey, minio.GetObjectOptions{}); err != nil {
|
||||
response.StatusCode = http.StatusInternalServerError
|
||||
response.SetStatusCode(http.StatusInternalServerError)
|
||||
response.Message = "Copie de document ne semble pas avoir fonctionnée"
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
// Delete old file
|
||||
if err := h.MediaClient.MinioClient.RemoveObject(ctx,
|
||||
request.Params.Bucket, request.Params.Document, minio.RemoveObjectOptions{}); err != nil {
|
||||
response.StatusCode = http.StatusInternalServerError
|
||||
response.SetStatusCode(http.StatusInternalServerError)
|
||||
response.Message = "Erreur pendant tentative de supprimer document source"
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
//TODO cleanup
|
||||
|
||||
// Return result
|
||||
response.StatusCode = http.StatusOK
|
||||
response.SetStatusCode(http.StatusOK)
|
||||
response.Message = "Document renommé avec succès"
|
||||
response.Data.Bucket = request.Params.Bucket
|
||||
response.Data.Key = request.Data.NewKey
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
|
||||
}
|
||||
|
|
|
@ -15,11 +15,11 @@ func (h *V1Handler) V1SeedPOST(c echo.Context) error {
|
|||
new_buckets, err := h.MediaClient.Seed()
|
||||
response.Data.Buckets = new_buckets
|
||||
if err != nil {
|
||||
response.StatusCode = http.StatusInternalServerError
|
||||
response.SetStatusCode(http.StatusInternalServerError)
|
||||
response.Message = "Error during mediaClient.Seed()"
|
||||
response.Error = err.Error()
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
if len(new_buckets) == 0 {
|
||||
|
@ -29,7 +29,7 @@ func (h *V1Handler) V1SeedPOST(c echo.Context) error {
|
|||
response.Message = "Buckets successfully created"
|
||||
}
|
||||
|
||||
response.StatusCode = http.StatusOK
|
||||
response.SetStatusCode(http.StatusOK)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
|
|
@ -18,9 +18,9 @@ func (h *V1Handler) V1SpecGET(c echo.Context) error {
|
|||
|
||||
if !request.Complete() {
|
||||
response.Message = "Incomplete V1SpecGET request received"
|
||||
response.StatusCode = http.StatusBadRequest
|
||||
response.SetStatusCode(http.StatusBadRequest)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
||||
response.Data.Spec = fmt.Sprintf("# pave spec for agecem-org %s\n", version.Version())
|
||||
|
@ -30,7 +30,7 @@ func (h *V1Handler) V1SpecGET(c echo.Context) error {
|
|||
}
|
||||
|
||||
response.Message = "ok"
|
||||
response.StatusCode = http.StatusOK
|
||||
response.SetStatusCode(http.StatusOK)
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
return c.JSON(response.StatusCode(), response)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue