fixed rail & operation names

This commit is contained in:
Stephan D
2026-02-27 02:33:40 +01:00
parent 82cf91e703
commit 747153bdbf
73 changed files with 877 additions and 667 deletions

View File

@@ -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),
}
}