X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FCryptoportfolio%2FFront.git;a=blobdiff_plain;f=api%2Fconst.go;h=4f608d575ab6dfe0fa85d5f83693cb1f6e8010b5;hp=2ad4d6135af2920bf9b899970910e38fe17e6f33;hb=4495b984d3e60874281f37cdb2dbe2cf1c3874ab;hpb=372ed7400f57355eb7dd98058b10ddeb1e1ff635 diff --git a/api/const.go b/api/const.go index 2ad4d61..4f608d5 100644 --- a/api/const.go +++ b/api/const.go @@ -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 }