package api import "net/http" //go:generate stringer -type=Status,ErrorCode -output const_string.go type Status uint32 type ErrorCode uint32 const EXTERNAL_SERVICE_TIMEOUT_SECONDS = 10 const ( OK Status = iota NOK BadRequest ErrorCode = iota + 1 EmailExists ExternalServiceTimeout InternalError InvalidCredentials InvalidEmail InvalidMarketCredentials IPRestrictedApiKey InvalidOtp InvalidPassword NeedOtpValidation NotAuthorized NotFound OtpAlreadySetup OtpNotSetup UserNotConfirmed ) func StatusToHttpCode(status Status, code ErrorCode) int { if status == OK { return http.StatusOK } switch code { case BadRequest, InvalidPassword, InvalidEmail, InvalidMarketCredentials, IPRestrictedApiKey: return http.StatusBadRequest case InvalidCredentials, InvalidOtp: return http.StatusUnauthorized case UserNotConfirmed, NotAuthorized, OtpAlreadySetup, OtpNotSetup, NeedOtpValidation: return http.StatusForbidden case EmailExists: return http.StatusConflict case NotFound: return http.StatusNotFound case ExternalServiceTimeout: return http.StatusGatewayTimeout } return http.StatusInternalServerError }