]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git/blobdiff - api/const.go
Error flags.
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git] / api / const.go
index 2ad4d6135af2920bf9b899970910e38fe17e6f33..4f608d575ab6dfe0fa85d5f83693cb1f6e8010b5 100644 (file)
@@ -1,58 +1,66 @@
 package api
 
-import "net/http"
+import (
+       "net/http"
 
-//go:generate stringer -type=Status,ErrorCode -output const_string.go
+       "github.com/jloup/utils"
+)
+
+//go:generate stringer -type=Status -output const_string.go
 type Status uint32
-type ErrorCode uint32
 
 const EXTERNAL_SERVICE_TIMEOUT_SECONDS = 20
 
 const (
        OK Status = iota
        NOK
+)
 
-       BadRequest ErrorCode = iota + 1
-       EmailExists
-       ExternalServiceTimeout
-       InternalError
-       InvalidCredentials
-       InvalidEmail
-       InvalidMarketCredentials
-       MarketCredentialsNotConfigured
-       IPRestrictedApiKey
-       InvalidOtp
-       InvalidPassword
-       NeedOtpValidation
-       NotAuthorized
-       NotFound
-       OtpAlreadySetup
-       OtpNotSetup
-       UserNotConfirmed
+var (
+       errorFlagCounter               utils.Counter = 0
+       BadRequest                     utils.Flag    = utils.InitFlag(&errorFlagCounter, "BadRequest")
+       EmailExists                    utils.Flag    = utils.InitFlag(&errorFlagCounter, "EmailExists")
+       ExternalServiceTimeout         utils.Flag    = utils.InitFlag(&errorFlagCounter, "ExternalServiceTimeout")
+       InternalError                  utils.Flag    = utils.InitFlag(&errorFlagCounter, "InternalError")
+       InvalidCredentials             utils.Flag    = utils.InitFlag(&errorFlagCounter, "InvalidCredentials")
+       InvalidEmail                   utils.Flag    = utils.InitFlag(&errorFlagCounter, "InvalidEmail")
+       InvalidMarketCredentials       utils.Flag    = utils.InitFlag(&errorFlagCounter, "InvalidMarketCredentials")
+       MarketCredentialsNotConfigured utils.Flag    = utils.InitFlag(&errorFlagCounter, "MarketCredentialsNotConfigured")
+       IPRestrictedApiKey             utils.Flag    = utils.InitFlag(&errorFlagCounter, "IPRestrictedApiKey")
+       InvalidOtp                     utils.Flag    = utils.InitFlag(&errorFlagCounter, "InvalidOtp")
+       InvalidPassword                utils.Flag    = utils.InitFlag(&errorFlagCounter, "InvalidPassword")
+       NeedOtpValidation              utils.Flag    = utils.InitFlag(&errorFlagCounter, "NeedOtpValidation")
+       NotAuthorized                  utils.Flag    = utils.InitFlag(&errorFlagCounter, "NotAuthorized")
+       NotFound                       utils.Flag    = utils.InitFlag(&errorFlagCounter, "NotFound")
+       OtpAlreadySetup                utils.Flag    = utils.InitFlag(&errorFlagCounter, "OtpAlreadySetup")
+       OtpNotSetup                    utils.Flag    = utils.InitFlag(&errorFlagCounter, "OtpNotSetup")
+       UserNotConfirmed               utils.Flag    = utils.InitFlag(&errorFlagCounter, "UserNotConfirmed")
+
+       StatusBadRequest     utils.Flag = utils.Join("BadRequest", BadRequest, InvalidPassword, InvalidEmail, InvalidMarketCredentials, IPRestrictedApiKey, MarketCredentialsNotConfigured)
+       StatusUnauthorized   utils.Flag = utils.Join("Unauthorized", InvalidCredentials, InvalidOtp)
+       StatusForbidden      utils.Flag = utils.Join("Forbidden", UserNotConfirmed, NotAuthorized, OtpAlreadySetup, OtpNotSetup, NeedOtpValidation)
+       StatusConflicts      utils.Flag = utils.Join("Conflicts", EmailExists)
+       StatusNotFound       utils.Flag = utils.Join("NotFound", NotFound)
+       StatusGatewayTimeout utils.Flag = utils.Join("GatewayTimeout", ExternalServiceTimeout)
 )
 
-func StatusToHttpCode(status Status, code ErrorCode) int {
+func StatusToHttpCode(status Status, code utils.Flag) int {
        if status == OK {
                return http.StatusOK
        }
 
-       switch code {
-       case BadRequest, InvalidPassword, InvalidEmail, InvalidMarketCredentials, IPRestrictedApiKey, MarketCredentialsNotConfigured:
+       switch {
+       case utils.Intersect(code, StatusBadRequest):
                return http.StatusBadRequest
-
-       case InvalidCredentials, InvalidOtp:
+       case utils.Intersect(code, StatusUnauthorized):
                return http.StatusUnauthorized
-
-       case UserNotConfirmed, NotAuthorized, OtpAlreadySetup, OtpNotSetup, NeedOtpValidation:
+       case utils.Intersect(code, StatusForbidden):
                return http.StatusForbidden
-
-       case EmailExists:
+       case utils.Intersect(code, StatusConflicts):
                return http.StatusConflict
-
-       case NotFound:
+       case utils.Intersect(code, StatusNotFound):
                return http.StatusNotFound
-
-       case ExternalServiceTimeout:
+       case utils.Intersect(code, StatusGatewayTimeout):
                return http.StatusGatewayTimeout
        }