This is an automated email from the ASF dual-hosted git repository.

tianxiaoliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-kie.git


The following commit(s) were added to refs/heads/master by this push:
     new d6a4a9f  Add config error (#183)
d6a4a9f is described below

commit d6a4a9ff027968b6af2a4ddfbf1f8ac554ae453d
Author: little-cui <[email protected]>
AuthorDate: Mon Jun 7 14:43:45 2021 +0800

    Add config error (#183)
    
    * Add config error
    
    * Use foundation/validator instead
---
 server/resource/v1/admin_resource.go   |  5 ++--
 server/resource/v1/common.go           | 12 ++++----
 server/resource/v1/history_resource.go | 15 +++++-----
 server/resource/v1/kv_resource.go      | 54 +++++++++++++++++-----------------
 4 files changed, 45 insertions(+), 41 deletions(-)

diff --git a/server/resource/v1/admin_resource.go 
b/server/resource/v1/admin_resource.go
index 5b4c191..d359044 100644
--- a/server/resource/v1/admin_resource.go
+++ b/server/resource/v1/admin_resource.go
@@ -21,6 +21,7 @@ import (
        "github.com/apache/servicecomb-kie/pkg/model"
        "github.com/apache/servicecomb-kie/server/service"
        goRestful "github.com/emicklei/go-restful"
+       "github.com/go-chassis/cari/config"
        "github.com/go-chassis/go-chassis/v2/pkg/runtime"
        "github.com/go-chassis/go-chassis/v2/server/restful"
        "github.com/go-chassis/openlog"
@@ -59,7 +60,7 @@ func (r *AdminResource) HealthCheck(context *restful.Context) 
{
        resp := &model.DocHealthCheck{}
        latest, err := service.RevisionService.GetRevision(context.Ctx, domain)
        if err != nil {
-               WriteErrResponse(context, http.StatusInternalServerError, 
err.Error())
+               WriteErrResponse(context, config.ErrInternal, err.Error())
                return
        }
        resp.Revision = strconv.FormatInt(latest, 10)
@@ -67,7 +68,7 @@ func (r *AdminResource) HealthCheck(context *restful.Context) 
{
        resp.Timestamp = time.Now().Unix()
        total, err := service.KVService.Total(context.Ctx, domain)
        if err != nil {
-               WriteErrResponse(context, http.StatusInternalServerError, 
err.Error())
+               WriteErrResponse(context, config.ErrInternal, err.Error())
                return
        }
        resp.Total = total
diff --git a/server/resource/v1/common.go b/server/resource/v1/common.go
index 96b6eb9..70f6010 100644
--- a/server/resource/v1/common.go
+++ b/server/resource/v1/common.go
@@ -23,6 +23,7 @@ import (
        "errors"
        "github.com/apache/servicecomb-kie/pkg/model"
        "github.com/apache/servicecomb-kie/server/service/mongo/session"
+       "github.com/go-chassis/cari/config"
        "github.com/go-chassis/cari/rbac"
        "net/http"
        "strconv"
@@ -100,10 +101,11 @@ func ReadLabelCombinations(req *goRestful.Request) 
([]map[string]string, error)
 }
 
 //WriteErrResponse write error message to client
-func WriteErrResponse(context *restful.Context, status int, msg string) {
+func WriteErrResponse(context *restful.Context, code int32, msg string) {
+       configErr := config.NewError(code, msg)
        context.Resp.Header().Set(goRestful.HEADER_ContentType, 
goRestful.MIME_JSON)
-       context.WriteHeader(status)
-       b, err := json.MarshalIndent(&ErrorMsg{Msg: msg}, "", " ")
+       context.WriteHeader(configErr.StatusCode())
+       b, err := json.MarshalIndent(configErr, "", " ")
        if err != nil {
                openlog.Error("can not marshal:" + err.Error())
                return
@@ -261,13 +263,13 @@ func queryAndResponse(rctx *restful.Context, request 
*model.ListKVRequest) {
        }
        rev, err := service.RevisionService.GetRevision(rctx.Ctx, 
request.Domain)
        if err != nil {
-               WriteErrResponse(rctx, http.StatusInternalServerError, 
err.Error())
+               WriteErrResponse(rctx, config.ErrInternal, err.Error())
                return
        }
        kv, err := service.KVService.List(rctx.Ctx, request.Domain, 
request.Project, opts...)
        if err != nil {
                openlog.Error("common: " + err.Error())
-               WriteErrResponse(rctx, http.StatusInternalServerError, 
common.MsgDBError)
+               WriteErrResponse(rctx, config.ErrInternal, common.MsgDBError)
                return
        }
        rctx.ReadResponseWriter().Header().Set(common.HeaderRevision, 
strconv.FormatInt(rev, 10))
diff --git a/server/resource/v1/history_resource.go 
b/server/resource/v1/history_resource.go
index acf7fb1..dbfbf80 100644
--- a/server/resource/v1/history_resource.go
+++ b/server/resource/v1/history_resource.go
@@ -21,6 +21,7 @@ import (
        "github.com/apache/servicecomb-kie/pkg/common"
        "github.com/apache/servicecomb-kie/pkg/model"
        "github.com/apache/servicecomb-kie/server/service"
+       "github.com/go-chassis/cari/config"
        "net/http"
 
        goRestful "github.com/emicklei/go-restful"
@@ -40,12 +41,12 @@ func (r *HistoryResource) GetRevisions(context 
*restful.Context) {
        limitStr := context.ReadQueryParameter(common.QueryParamLimit)
        offset, limit, err := checkPagination(offsetStr, limitStr)
        if err != nil {
-               WriteErrResponse(context, http.StatusBadRequest, err.Error())
+               WriteErrResponse(context, config.ErrInvalidParams, err.Error())
                return
        }
        if kvID == "" {
                openlog.Error("kv id is nil")
-               WriteErrResponse(context, http.StatusForbidden, "kv_id must not 
be empty")
+               WriteErrResponse(context, config.ErrRequiredRecordId, "kv_id 
must not be empty")
                return
        }
        revisions, err := service.HistoryService.GetHistory(context.Ctx, kvID,
@@ -53,10 +54,10 @@ func (r *HistoryResource) GetRevisions(context 
*restful.Context) {
                service.WithLimit(limit))
        if err != nil {
                if err == service.ErrRevisionNotExist {
-                       WriteErrResponse(context, http.StatusNotFound, 
err.Error())
+                       WriteErrResponse(context, config.ErrRecordNotExists, 
err.Error())
                        return
                }
-               WriteErrResponse(context, http.StatusInternalServerError, 
err.Error())
+               WriteErrResponse(context, config.ErrInternal, err.Error())
                return
        }
        err = writeResponse(context, revisions)
@@ -94,17 +95,17 @@ func (r *HistoryResource) GetPollingData(context 
*restful.Context) {
        }
        domain := ReadDomain(context.Ctx)
        if domain == "" {
-               WriteErrResponse(context, http.StatusInternalServerError, 
common.MsgDomainMustNotBeEmpty)
+               WriteErrResponse(context, config.ErrInternal, 
common.MsgDomainMustNotBeEmpty)
                return
        }
        query.Domain = domain
        records, err := service.TrackService.GetPollingDetail(context.Ctx, 
query)
        if err != nil {
                if err == service.ErrRecordNotExists {
-                       WriteErrResponse(context, http.StatusNotFound, 
err.Error())
+                       WriteErrResponse(context, config.ErrRecordNotExists, 
err.Error())
                        return
                }
-               WriteErrResponse(context, http.StatusInternalServerError, 
err.Error())
+               WriteErrResponse(context, config.ErrInternal, err.Error())
                return
        }
        resp := &model.PollingDataResponse{}
diff --git a/server/resource/v1/kv_resource.go 
b/server/resource/v1/kv_resource.go
index 51f74be..52d9a97 100644
--- a/server/resource/v1/kv_resource.go
+++ b/server/resource/v1/kv_resource.go
@@ -21,7 +21,6 @@ package v1
 import (
        "encoding/json"
        "fmt"
-       "github.com/go-chassis/foundation/validator"
        "net/http"
 
        "github.com/apache/servicecomb-kie/pkg/common"
@@ -29,8 +28,9 @@ import (
        "github.com/apache/servicecomb-kie/server/pubsub"
        "github.com/apache/servicecomb-kie/server/service"
        "github.com/apache/servicecomb-kie/server/service/mongo/session"
-
        goRestful "github.com/emicklei/go-restful"
+       "github.com/go-chassis/cari/config"
+       "github.com/go-chassis/foundation/validator"
        "github.com/go-chassis/go-chassis/v2/pkg/backends/quota"
        "github.com/go-chassis/go-chassis/v2/server/restful"
        "github.com/go-chassis/openlog"
@@ -46,7 +46,7 @@ func (r *KVResource) Post(rctx *restful.Context) {
        project := rctx.ReadPathParameter(common.PathParameterProject)
        kv := new(model.KVDoc)
        if err = readRequest(rctx, kv); err != nil {
-               WriteErrResponse(rctx, http.StatusBadRequest, 
fmt.Sprintf(FmtReadRequestError, err))
+               WriteErrResponse(rctx, config.ErrInvalidParams, 
fmt.Sprintf(FmtReadRequestError, err))
                return
        }
        domain := ReadDomain(rctx.Ctx)
@@ -57,28 +57,28 @@ func (r *KVResource) Post(rctx *restful.Context) {
        }
        err = validator.Validate(kv)
        if err != nil {
-               WriteErrResponse(rctx, http.StatusBadRequest, err.Error())
+               WriteErrResponse(rctx, config.ErrInvalidParams, err.Error())
                return
        }
        err = quota.PreCreate("", kv.Domain, "", 1)
        if err != nil {
                if err == quota.ErrReached {
                        openlog.Info(fmt.Sprintf("can not create kv %s@%s, due 
to quota violation", kv.Key, kv.Project))
-                       WriteErrResponse(rctx, http.StatusUnprocessableEntity, 
err.Error())
+                       WriteErrResponse(rctx, config.ErrNotEnoughQuota, 
err.Error())
                        return
                }
                openlog.Error(err.Error())
-               WriteErrResponse(rctx, http.StatusInternalServerError, "quota 
check failed")
+               WriteErrResponse(rctx, config.ErrInternal, "quota check failed")
                return
        }
        kv, err = service.KVService.Create(rctx.Ctx, kv)
        if err != nil {
                openlog.Error(fmt.Sprintf("post err:%s", err.Error()))
                if err == session.ErrKVAlreadyExists {
-                       WriteErrResponse(rctx, http.StatusConflict, err.Error())
+                       WriteErrResponse(rctx, config.ErrRecordAlreadyExists, 
err.Error())
                        return
                }
-               WriteErrResponse(rctx, http.StatusInternalServerError, "create 
kv failed")
+               WriteErrResponse(rctx, config.ErrInternal, "create kv failed")
                return
        }
        err = pubsub.Publish(&pubsub.KVChangeEvent{
@@ -107,7 +107,7 @@ func (r *KVResource) Put(rctx *restful.Context) {
        project := rctx.ReadPathParameter(common.PathParameterProject)
        kvReq := new(model.UpdateKVRequest)
        if err = readRequest(rctx, kvReq); err != nil {
-               WriteErrResponse(rctx, http.StatusBadRequest, 
fmt.Sprintf(FmtReadRequestError, err))
+               WriteErrResponse(rctx, config.ErrInvalidParams, 
fmt.Sprintf(FmtReadRequestError, err))
                return
        }
        domain := ReadDomain(rctx.Ctx)
@@ -116,13 +116,13 @@ func (r *KVResource) Put(rctx *restful.Context) {
        kvReq.Project = project
        err = validator.Validate(kvReq)
        if err != nil {
-               WriteErrResponse(rctx, http.StatusBadRequest, err.Error())
+               WriteErrResponse(rctx, config.ErrInvalidParams, err.Error())
                return
        }
        kv, err := service.KVService.Update(rctx.Ctx, kvReq)
        if err != nil {
                openlog.Error(fmt.Sprintf("put [%s] err:%s", kvID, err.Error()))
-               WriteErrResponse(rctx, http.StatusInternalServerError, "update 
kv failed")
+               WriteErrResponse(rctx, config.ErrInternal, "update kv failed")
                return
        }
        err = pubsub.Publish(&pubsub.KVChangeEvent{
@@ -153,17 +153,17 @@ func (r *KVResource) Get(rctx *restful.Context) {
        }
        err := validator.Validate(request)
        if err != nil {
-               WriteErrResponse(rctx, http.StatusBadRequest, err.Error())
+               WriteErrResponse(rctx, config.ErrInvalidParams, err.Error())
                return
        }
        kv, err := service.KVService.Get(rctx.Ctx, request)
        if err != nil {
                openlog.Error("kv_resource: " + err.Error())
                if err == service.ErrKeyNotExists {
-                       WriteErrResponse(rctx, http.StatusNotFound, err.Error())
+                       WriteErrResponse(rctx, config.ErrRecordNotExists, 
err.Error())
                        return
                }
-               WriteErrResponse(rctx, http.StatusInternalServerError, "get kv 
failed")
+               WriteErrResponse(rctx, config.ErrInternal, "get kv failed")
                return
        }
        kv.Domain = ""
@@ -185,7 +185,7 @@ func (r *KVResource) List(rctx *restful.Context) {
        }
        labels, err := getLabels(rctx)
        if err != nil {
-               WriteErrResponse(rctx, http.StatusBadRequest, 
common.MsgIllegalLabels)
+               WriteErrResponse(rctx, config.ErrInvalidParams, 
common.MsgIllegalLabels)
                return
        }
        request.Labels = labels
@@ -193,14 +193,14 @@ func (r *KVResource) List(rctx *restful.Context) {
        limitStr := rctx.ReadQueryParameter(common.QueryParamLimit)
        offset, limit, err := checkPagination(offsetStr, limitStr)
        if err != nil {
-               WriteErrResponse(rctx, http.StatusBadRequest, err.Error())
+               WriteErrResponse(rctx, config.ErrInvalidParams, err.Error())
                return
        }
        request.Offset = offset
        request.Limit = limit
        err = validator.Validate(request)
        if err != nil {
-               WriteErrResponse(rctx, http.StatusBadRequest, err.Error())
+               WriteErrResponse(rctx, config.ErrInvalidParams, err.Error())
                return
        }
        returnData(rctx, request)
@@ -221,7 +221,7 @@ func returnData(rctx *restful.Context, request 
*model.ListKVRequest) {
                        DomainID:  request.Domain,
                })
                if err != nil {
-                       WriteErrResponse(rctx, http.StatusBadRequest, 
err.Error())
+                       WriteErrResponse(rctx, config.ErrObserveEvent, 
err.Error())
                        return
                }
                if changed {
@@ -233,10 +233,10 @@ func returnData(rctx *restful.Context, request 
*model.ListKVRequest) {
                revised, err := isRevised(rctx.Ctx, revStr, request.Domain)
                if err != nil {
                        if err == ErrInvalidRev {
-                               WriteErrResponse(rctx, http.StatusBadRequest, 
err.Error())
+                               WriteErrResponse(rctx, config.ErrInvalidParams, 
err.Error())
                                return
                        }
-                       WriteErrResponse(rctx, http.StatusInternalServerError, 
err.Error())
+                       WriteErrResponse(rctx, config.ErrInternal, err.Error())
                        return
                }
                if revised {
@@ -250,7 +250,7 @@ func returnData(rctx *restful.Context, request 
*model.ListKVRequest) {
                                DomainID:  request.Domain,
                        })
                        if err != nil {
-                               WriteErrResponse(rctx, http.StatusBadRequest, 
err.Error())
+                               WriteErrResponse(rctx, config.ErrObserveEvent, 
err.Error())
                                return
                        }
                        if changed {
@@ -272,7 +272,7 @@ func (r *KVResource) Delete(rctx *restful.Context) {
        kvID := rctx.ReadPathParameter(common.PathParamKVID)
        err := validateDelete(domain, project, kvID)
        if err != nil {
-               WriteErrResponse(rctx, http.StatusBadRequest, err.Error())
+               WriteErrResponse(rctx, config.ErrInvalidParams, err.Error())
                return
        }
        kv, err := service.KVService.FindOneAndDelete(rctx.Ctx, kvID, domain, 
project)
@@ -282,10 +282,10 @@ func (r *KVResource) Delete(rctx *restful.Context) {
                        "error": err.Error(),
                }))
                if err == service.ErrKeyNotExists {
-                       WriteErrResponse(rctx, http.StatusNotFound, err.Error())
+                       WriteErrResponse(rctx, config.ErrRecordNotExists, 
err.Error())
                        return
                }
-               WriteErrResponse(rctx, http.StatusInternalServerError, 
common.MsgDeleteKVFailed)
+               WriteErrResponse(rctx, config.ErrInternal, 
common.MsgDeleteKVFailed)
                return
        }
        err = pubsub.Publish(&pubsub.KVChangeEvent{
@@ -307,12 +307,12 @@ func (r *KVResource) DeleteList(rctx *restful.Context) {
        domain := ReadDomain(rctx.Ctx)
        b := new(DeleteBody)
        if err := json.NewDecoder(rctx.ReadRequest().Body).Decode(b); err != 
nil {
-               WriteErrResponse(rctx, http.StatusBadRequest, 
fmt.Sprintf(FmtReadRequestError, err))
+               WriteErrResponse(rctx, config.ErrInvalidParams, 
fmt.Sprintf(FmtReadRequestError, err))
                return
        }
        err := validateDeleteList(domain, project)
        if err != nil {
-               WriteErrResponse(rctx, http.StatusBadRequest, err.Error())
+               WriteErrResponse(rctx, config.ErrInvalidParams, err.Error())
                return
        }
        kvs, err := service.KVService.FindManyAndDelete(rctx.Ctx, b.IDs, 
domain, project)
@@ -325,7 +325,7 @@ func (r *KVResource) DeleteList(rctx *restful.Context) {
                        "kvIDs": b.IDs,
                        "error": err.Error(),
                }))
-               WriteErrResponse(rctx, http.StatusInternalServerError, 
common.MsgDeleteKVFailed)
+               WriteErrResponse(rctx, config.ErrInternal, 
common.MsgDeleteKVFailed)
                return
        }
        for _, kv := range kvs {

Reply via email to