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

@@ -2,6 +2,7 @@ package model
import (
"fmt"
"github.com/tech/sendico/pkg/discovery"
"strings"
"github.com/shopspring/decimal"
@@ -110,7 +111,7 @@ func gatewayAllowsAction(operations []RailOperation, cap RailCapabilities, actio
func capabilityAllowsAction(cap RailCapabilities, action RailOperation, dir GatewayDirection) bool {
switch action {
case RailOperationSend:
case discovery.RailOperationSend:
switch dir {
case GatewayDirectionOut:
return cap.CanPayOut
@@ -119,7 +120,7 @@ func capabilityAllowsAction(cap RailCapabilities, action RailOperation, dir Gate
default:
return cap.CanPayIn || cap.CanPayOut
}
case RailOperationExternalDebit, RailOperationExternalCredit:
case discovery.RailOperationExternalDebit, discovery.RailOperationExternalCredit:
switch dir {
case GatewayDirectionOut:
return cap.CanPayOut
@@ -128,13 +129,13 @@ func capabilityAllowsAction(cap RailCapabilities, action RailOperation, dir Gate
default:
return cap.CanPayIn || cap.CanPayOut
}
case RailOperationFee:
case discovery.RailOperationFee:
return cap.CanSendFee
case RailOperationObserveConfirm:
case discovery.RailOperationObserveConfirm:
return cap.RequiresObserveConfirm
case RailOperationBlock:
case discovery.RailOperationBlock:
return cap.CanBlock
case RailOperationRelease:
case discovery.RailOperationRelease:
return cap.CanRelease
default:
return true
@@ -143,7 +144,7 @@ func capabilityAllowsAction(cap RailCapabilities, action RailOperation, dir Gate
func operationsAllowAction(operations []RailOperation, action RailOperation, dir GatewayDirection) bool {
action = ParseRailOperation(string(action))
if action == RailOperationUnspecified {
if action == discovery.RailOperationUnspecified {
return false
}
@@ -152,20 +153,20 @@ func operationsAllowAction(operations []RailOperation, action RailOperation, dir
}
switch action {
case RailOperationSend:
case discovery.RailOperationSend:
switch dir {
case GatewayDirectionIn:
return HasRailOperation(operations, RailOperationExternalDebit)
return HasRailOperation(operations, discovery.RailOperationExternalDebit)
case GatewayDirectionOut:
return HasRailOperation(operations, RailOperationExternalCredit)
return HasRailOperation(operations, discovery.RailOperationExternalCredit)
default:
return HasRailOperation(operations, RailOperationExternalDebit) ||
HasRailOperation(operations, RailOperationExternalCredit)
return HasRailOperation(operations, discovery.RailOperationExternalDebit) ||
HasRailOperation(operations, discovery.RailOperationExternalCredit)
}
case RailOperationExternalDebit:
return HasRailOperation(operations, RailOperationSend)
case RailOperationExternalCredit:
return HasRailOperation(operations, RailOperationSend)
case discovery.RailOperationExternalDebit:
return HasRailOperation(operations, discovery.RailOperationSend)
case discovery.RailOperationExternalCredit:
return HasRailOperation(operations, discovery.RailOperationSend)
default:
return false
}
@@ -181,7 +182,7 @@ func amountWithinLimits(gw *GatewayInstanceDescriptor, limits Limits, currency s
if override, ok := limits.CurrencyLimits[currency]; ok {
min = firstLimitValue(override.MinAmount, min)
max = firstLimitValue(override.MaxAmount, max)
if action == RailOperationFee {
if action == discovery.RailOperationFee {
maxFee = firstLimitValue(override.MaxFee, maxFee)
}
}
@@ -206,7 +207,7 @@ func amountWithinLimits(gw *GatewayInstanceDescriptor, limits Limits, currency s
return gatewayIneligible(gw, fmt.Sprintf("amount %s %s exceeds per-tx max limit %s", amount.String(), currency, val.String()))
}
}
if action == RailOperationFee && maxFee != "" {
if action == discovery.RailOperationFee && maxFee != "" {
if val, err := decimal.NewFromString(maxFee); err == nil && amount.GreaterThan(val) {
return gatewayIneligible(gw, fmt.Sprintf("fee amount %s %s exceeds max fee limit %s", amount.String(), currency, val.String()))
}