quotation service fixed
This commit is contained in:
62
api/payments/storage/model/rails.go
Normal file
62
api/payments/storage/model/rails.go
Normal file
@@ -0,0 +1,62 @@
|
||||
package model
|
||||
|
||||
import "strings"
|
||||
|
||||
var supportedRails = map[Rail]struct{}{
|
||||
RailCrypto: {},
|
||||
RailProviderSettlement: {},
|
||||
RailLedger: {},
|
||||
RailCardPayout: {},
|
||||
RailFiatOnRamp: {},
|
||||
RailFiatOffRamp: {},
|
||||
}
|
||||
|
||||
// ParseRail canonicalizes string values into a Rail token.
|
||||
func ParseRail(value string) Rail {
|
||||
clean := strings.ToUpper(strings.TrimSpace(value))
|
||||
if clean == "" {
|
||||
return RailUnspecified
|
||||
}
|
||||
clean = strings.ReplaceAll(clean, "-", "_")
|
||||
clean = strings.ReplaceAll(clean, " ", "_")
|
||||
for strings.Contains(clean, "__") {
|
||||
clean = strings.ReplaceAll(clean, "__", "_")
|
||||
}
|
||||
|
||||
switch clean {
|
||||
case string(RailCrypto), "RAIL_CRYPTO":
|
||||
return RailCrypto
|
||||
case string(RailProviderSettlement), "PROVIDER_SETTLEMENT", "RAIL_SETTLEMENT", "RAIL_PROVIDER_SETTLEMENT":
|
||||
return RailProviderSettlement
|
||||
case string(RailLedger), "RAIL_LEDGER":
|
||||
return RailLedger
|
||||
case string(RailCardPayout), "CARD_PAYOUT", "RAIL_CARD", "RAIL_CARD_PAYOUT":
|
||||
return RailCardPayout
|
||||
case string(RailFiatOnRamp), "FIAT_ONRAMP", "RAIL_ONRAMP", "RAIL_FIAT_ONRAMP":
|
||||
return RailFiatOnRamp
|
||||
case string(RailFiatOffRamp), "FIAT_OFFRAMP", "RAIL_OFFRAMP", "RAIL_FIAT_OFFRAMP":
|
||||
return RailFiatOffRamp
|
||||
default:
|
||||
return RailUnspecified
|
||||
}
|
||||
}
|
||||
|
||||
// IsSupportedRail reports whether rail is recognized by payment planning.
|
||||
func IsSupportedRail(rail Rail) bool {
|
||||
_, ok := supportedRails[ParseRail(string(rail))]
|
||||
return ok
|
||||
}
|
||||
|
||||
func normalizeRail(value Rail) Rail {
|
||||
parsed := ParseRail(string(value))
|
||||
if parsed != RailUnspecified {
|
||||
return parsed
|
||||
}
|
||||
|
||||
clean := strings.ToUpper(strings.TrimSpace(string(value)))
|
||||
if clean == "" {
|
||||
return RailUnspecified
|
||||
}
|
||||
|
||||
return Rail(clean)
|
||||
}
|
||||
Reference in New Issue
Block a user