]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git/blob - api/const.go
Error flags.
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git] / api / const.go
1 package api
2
3 import (
4 "net/http"
5
6 "github.com/jloup/utils"
7 )
8
9 //go:generate stringer -type=Status -output const_string.go
10 type Status uint32
11
12 const EXTERNAL_SERVICE_TIMEOUT_SECONDS = 20
13
14 const (
15 OK Status = iota
16 NOK
17 )
18
19 var (
20 errorFlagCounter utils.Counter = 0
21 BadRequest utils.Flag = utils.InitFlag(&errorFlagCounter, "BadRequest")
22 EmailExists utils.Flag = utils.InitFlag(&errorFlagCounter, "EmailExists")
23 ExternalServiceTimeout utils.Flag = utils.InitFlag(&errorFlagCounter, "ExternalServiceTimeout")
24 InternalError utils.Flag = utils.InitFlag(&errorFlagCounter, "InternalError")
25 InvalidCredentials utils.Flag = utils.InitFlag(&errorFlagCounter, "InvalidCredentials")
26 InvalidEmail utils.Flag = utils.InitFlag(&errorFlagCounter, "InvalidEmail")
27 InvalidMarketCredentials utils.Flag = utils.InitFlag(&errorFlagCounter, "InvalidMarketCredentials")
28 MarketCredentialsNotConfigured utils.Flag = utils.InitFlag(&errorFlagCounter, "MarketCredentialsNotConfigured")
29 IPRestrictedApiKey utils.Flag = utils.InitFlag(&errorFlagCounter, "IPRestrictedApiKey")
30 InvalidOtp utils.Flag = utils.InitFlag(&errorFlagCounter, "InvalidOtp")
31 InvalidPassword utils.Flag = utils.InitFlag(&errorFlagCounter, "InvalidPassword")
32 NeedOtpValidation utils.Flag = utils.InitFlag(&errorFlagCounter, "NeedOtpValidation")
33 NotAuthorized utils.Flag = utils.InitFlag(&errorFlagCounter, "NotAuthorized")
34 NotFound utils.Flag = utils.InitFlag(&errorFlagCounter, "NotFound")
35 OtpAlreadySetup utils.Flag = utils.InitFlag(&errorFlagCounter, "OtpAlreadySetup")
36 OtpNotSetup utils.Flag = utils.InitFlag(&errorFlagCounter, "OtpNotSetup")
37 UserNotConfirmed utils.Flag = utils.InitFlag(&errorFlagCounter, "UserNotConfirmed")
38
39 StatusBadRequest utils.Flag = utils.Join("BadRequest", BadRequest, InvalidPassword, InvalidEmail, InvalidMarketCredentials, IPRestrictedApiKey, MarketCredentialsNotConfigured)
40 StatusUnauthorized utils.Flag = utils.Join("Unauthorized", InvalidCredentials, InvalidOtp)
41 StatusForbidden utils.Flag = utils.Join("Forbidden", UserNotConfirmed, NotAuthorized, OtpAlreadySetup, OtpNotSetup, NeedOtpValidation)
42 StatusConflicts utils.Flag = utils.Join("Conflicts", EmailExists)
43 StatusNotFound utils.Flag = utils.Join("NotFound", NotFound)
44 StatusGatewayTimeout utils.Flag = utils.Join("GatewayTimeout", ExternalServiceTimeout)
45 )
46
47 func StatusToHttpCode(status Status, code utils.Flag) int {
48 if status == OK {
49 return http.StatusOK
50 }
51
52 switch {
53 case utils.Intersect(code, StatusBadRequest):
54 return http.StatusBadRequest
55 case utils.Intersect(code, StatusUnauthorized):
56 return http.StatusUnauthorized
57 case utils.Intersect(code, StatusForbidden):
58 return http.StatusForbidden
59 case utils.Intersect(code, StatusConflicts):
60 return http.StatusConflict
61 case utils.Intersect(code, StatusNotFound):
62 return http.StatusNotFound
63 case utils.Intersect(code, StatusGatewayTimeout):
64 return http.StatusGatewayTimeout
65 }
66
67 return http.StatusInternalServerError
68 }