fixed rail & operation names
This commit is contained in:
@@ -1,26 +1,29 @@
|
||||
package model
|
||||
|
||||
import "strings"
|
||||
import (
|
||||
"github.com/tech/sendico/pkg/discovery"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var supportedRailOperations = map[RailOperation]struct{}{
|
||||
RailOperationDebit: {},
|
||||
RailOperationCredit: {},
|
||||
RailOperationExternalDebit: {},
|
||||
RailOperationExternalCredit: {},
|
||||
RailOperationMove: {},
|
||||
RailOperationSend: {},
|
||||
RailOperationFee: {},
|
||||
RailOperationObserveConfirm: {},
|
||||
RailOperationFXConvert: {},
|
||||
RailOperationBlock: {},
|
||||
RailOperationRelease: {},
|
||||
discovery.RailOperationDebit: {},
|
||||
discovery.RailOperationCredit: {},
|
||||
discovery.RailOperationExternalDebit: {},
|
||||
discovery.RailOperationExternalCredit: {},
|
||||
discovery.RailOperationMove: {},
|
||||
discovery.RailOperationSend: {},
|
||||
discovery.RailOperationFee: {},
|
||||
discovery.RailOperationObserveConfirm: {},
|
||||
discovery.RailOperationFXConvert: {},
|
||||
discovery.RailOperationBlock: {},
|
||||
discovery.RailOperationRelease: {},
|
||||
}
|
||||
|
||||
// ParseRailOperation canonicalizes string values into a RailOperation token.
|
||||
func ParseRailOperation(value string) RailOperation {
|
||||
clean := strings.ToUpper(strings.TrimSpace(value))
|
||||
if clean == "" {
|
||||
return RailOperationUnspecified
|
||||
return discovery.RailOperationUnspecified
|
||||
}
|
||||
return RailOperation(clean)
|
||||
}
|
||||
@@ -40,7 +43,7 @@ func NormalizeRailOperations(values []RailOperation) []RailOperation {
|
||||
seen := map[RailOperation]bool{}
|
||||
for _, value := range values {
|
||||
op := ParseRailOperation(string(value))
|
||||
if op == RailOperationUnspecified || !IsSupportedRailOperation(op) || seen[op] {
|
||||
if op == discovery.RailOperationUnspecified || !IsSupportedRailOperation(op) || seen[op] {
|
||||
continue
|
||||
}
|
||||
seen[op] = true
|
||||
@@ -67,7 +70,7 @@ func NormalizeRailOperationStrings(values []string) []RailOperation {
|
||||
// HasRailOperation checks whether ops includes action.
|
||||
func HasRailOperation(ops []RailOperation, action RailOperation) bool {
|
||||
want := ParseRailOperation(string(action))
|
||||
if want == RailOperationUnspecified {
|
||||
if want == discovery.RailOperationUnspecified {
|
||||
return false
|
||||
}
|
||||
for _, op := range ops {
|
||||
@@ -82,12 +85,12 @@ func HasRailOperation(ops []RailOperation, action RailOperation) bool {
|
||||
func RailCapabilitiesFromOperations(ops []RailOperation) RailCapabilities {
|
||||
normalized := NormalizeRailOperations(ops)
|
||||
return RailCapabilities{
|
||||
CanPayIn: HasRailOperation(normalized, RailOperationExternalDebit),
|
||||
CanPayOut: HasRailOperation(normalized, RailOperationSend) || HasRailOperation(normalized, RailOperationExternalCredit),
|
||||
CanPayIn: HasRailOperation(normalized, discovery.RailOperationExternalDebit),
|
||||
CanPayOut: HasRailOperation(normalized, discovery.RailOperationSend) || HasRailOperation(normalized, discovery.RailOperationExternalCredit),
|
||||
CanReadBalance: false,
|
||||
CanSendFee: HasRailOperation(normalized, RailOperationFee),
|
||||
RequiresObserveConfirm: HasRailOperation(normalized, RailOperationObserveConfirm),
|
||||
CanBlock: HasRailOperation(normalized, RailOperationBlock),
|
||||
CanRelease: HasRailOperation(normalized, RailOperationRelease),
|
||||
CanSendFee: HasRailOperation(normalized, discovery.RailOperationFee),
|
||||
RequiresObserveConfirm: HasRailOperation(normalized, discovery.RailOperationObserveConfirm),
|
||||
CanBlock: HasRailOperation(normalized, discovery.RailOperationBlock),
|
||||
CanRelease: HasRailOperation(normalized, discovery.RailOperationRelease),
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user