132 lines
4.9 KiB
Go
132 lines
4.9 KiB
Go
package api
|
|
|
|
import "net/http"
|
|
|
|
var (
|
|
// ErrorUnknown represents any error which cause is unknown.
|
|
// It might also be used for debug purposes as this error
|
|
// has to be used the less possible
|
|
ErrorUnknown Error = -1
|
|
|
|
// ErrorSuccess represents a generic successful service execution
|
|
ErrorSuccess Error = 0
|
|
|
|
// ErrorFailure is the most generic error
|
|
ErrorFailure Error = 1
|
|
|
|
// ErrorNoMatchFound has to be set when trying to fetch data and there is no result
|
|
ErrorNoMatchFound Error = 2
|
|
|
|
// ErrorAlreadyExists has to be set when trying to insert data, but identifiers or
|
|
// unique fields already exists
|
|
ErrorAlreadyExists Error = 3
|
|
|
|
// ErrorCreation has to be set when there is a creation/insert error
|
|
ErrorCreation Error = 4
|
|
|
|
// ErrorModification has to be set when there is an update/modification error
|
|
ErrorModification Error = 5
|
|
|
|
// ErrorDeletion has to be set when there is a deletion/removal error
|
|
ErrorDeletion Error = 6
|
|
|
|
// ErrorTransaction has to be set when there is a transactional error
|
|
ErrorTransaction Error = 7
|
|
|
|
// ErrorUpload has to be set when a file upload failed
|
|
ErrorUpload Error = 100
|
|
|
|
// ErrorDownload has to be set when a file download failed
|
|
ErrorDownload Error = 101
|
|
|
|
// MissingDownloadHeaders has to be set when the implementation
|
|
// of a service of type 'download' (which returns a file instead of
|
|
// a set or output fields) is missing its HEADER field
|
|
MissingDownloadHeaders Error = 102
|
|
|
|
// ErrorMissingDownloadBody has to be set when the implementation
|
|
// of a service of type 'download' (which returns a file instead of
|
|
// a set or output fields) is missing its BODY field
|
|
ErrorMissingDownloadBody Error = 103
|
|
|
|
// ErrorUnknownService is set when there is no service matching
|
|
// the http request URI.
|
|
ErrorUnknownService Error = 200
|
|
|
|
// ErrorUncallableService is set when there the requested service's
|
|
// implementation (plugin file) is not found/callable
|
|
ErrorUncallableService Error = 202
|
|
|
|
// ErrorNotImplemented is set when a handler is not implemented yet
|
|
ErrorNotImplemented Error = 203
|
|
|
|
// ErrorPermission is set when there is a permission error by default
|
|
// the api returns a permission error when the current scope (built
|
|
// by middlewares) does not match the scope required in the config.
|
|
// You can add your own permission policy and use this error
|
|
ErrorPermission Error = 300
|
|
|
|
// ErrorToken has to be set (usually in authentication middleware) to tell
|
|
// the user that this authentication token is expired or invalid
|
|
ErrorToken Error = 301
|
|
|
|
// ErrorMissingParam is set when a *required* parameter is missing from the
|
|
// http request
|
|
ErrorMissingParam Error = 400
|
|
|
|
// ErrorInvalidParam is set when a given parameter fails its type check as
|
|
// defined in the config file.
|
|
ErrorInvalidParam Error = 401
|
|
|
|
// ErrorInvalidDefaultParam is set when an optional parameter's default value
|
|
// does not match its type.
|
|
ErrorInvalidDefaultParam Error = 402
|
|
)
|
|
|
|
var errorReasons = map[Error]string{
|
|
ErrorUnknown: "unknown error",
|
|
ErrorSuccess: "all right",
|
|
ErrorFailure: "it failed",
|
|
ErrorNoMatchFound: "resource not found",
|
|
ErrorAlreadyExists: "already exists",
|
|
ErrorCreation: "create error",
|
|
ErrorModification: "update error",
|
|
ErrorDeletion: "delete error",
|
|
ErrorTransaction: "transactional error",
|
|
ErrorUpload: "upload failed",
|
|
ErrorDownload: "download failed",
|
|
MissingDownloadHeaders: "download headers are missing",
|
|
ErrorMissingDownloadBody: "download body is missing",
|
|
ErrorUnknownService: "unknown service",
|
|
ErrorUncallableService: "uncallable service",
|
|
ErrorNotImplemented: "not implemented",
|
|
ErrorPermission: "permission error",
|
|
ErrorToken: "token error",
|
|
ErrorMissingParam: "missing parameter",
|
|
ErrorInvalidParam: "invalid parameter",
|
|
ErrorInvalidDefaultParam: "invalid default param",
|
|
}
|
|
var errorStatus = map[Error]int{
|
|
ErrorUnknown: http.StatusOK,
|
|
ErrorSuccess: http.StatusOK,
|
|
ErrorFailure: http.StatusInternalServerError,
|
|
ErrorNoMatchFound: http.StatusOK,
|
|
ErrorAlreadyExists: http.StatusOK,
|
|
ErrorCreation: http.StatusOK,
|
|
ErrorModification: http.StatusOK,
|
|
ErrorDeletion: http.StatusOK,
|
|
ErrorTransaction: http.StatusOK,
|
|
ErrorUpload: http.StatusInternalServerError,
|
|
ErrorDownload: http.StatusInternalServerError,
|
|
MissingDownloadHeaders: http.StatusBadRequest,
|
|
ErrorMissingDownloadBody: http.StatusBadRequest,
|
|
ErrorUnknownService: http.StatusServiceUnavailable,
|
|
ErrorUncallableService: http.StatusServiceUnavailable,
|
|
ErrorNotImplemented: http.StatusNotImplemented,
|
|
ErrorPermission: http.StatusUnauthorized,
|
|
ErrorToken: http.StatusForbidden,
|
|
ErrorMissingParam: http.StatusBadRequest,
|
|
ErrorInvalidParam: http.StatusBadRequest,
|
|
ErrorInvalidDefaultParam: http.StatusBadRequest,
|
|
}
|