Files
sendico/api/pkg/messaging/internal/notifications/paymentgateway/notification.go
2026-01-04 12:57:40 +01:00

67 lines
1.7 KiB
Go

package notifications
import (
"encoding/json"
messaging "github.com/tech/sendico/pkg/messaging/envelope"
"github.com/tech/sendico/pkg/model"
nm "github.com/tech/sendico/pkg/model/notification"
"github.com/tech/sendico/pkg/mservice"
)
type PaymentGatewayIntentNotification struct {
messaging.Envelope
payload model.PaymentGatewayIntent
}
func (pgn *PaymentGatewayIntentNotification) Serialize() ([]byte, error) {
data, err := json.Marshal(pgn.payload)
if err != nil {
return nil, err
}
return pgn.Envelope.Wrap(data)
}
type PaymentGatewayExecutionNotification struct {
messaging.Envelope
payload model.PaymentGatewayExecution
}
func (pgn *PaymentGatewayExecutionNotification) Serialize() ([]byte, error) {
data, err := json.Marshal(pgn.payload)
if err != nil {
return nil, err
}
return pgn.Envelope.Wrap(data)
}
func intentEvent() model.NotificationEvent {
return model.NewNotification(mservice.PaymentGateway, nm.NAPaymentGatewayIntent)
}
func executionEvent() model.NotificationEvent {
return model.NewNotification(mservice.PaymentGateway, nm.NAPaymentGatewayExecution)
}
func NewPaymentGatewayIntentEnvelope(sender string, intent *model.PaymentGatewayIntent) messaging.Envelope {
var payload model.PaymentGatewayIntent
if intent != nil {
payload = *intent
}
return &PaymentGatewayIntentNotification{
Envelope: messaging.CreateEnvelope(sender, intentEvent()),
payload: payload,
}
}
func NewPaymentGatewayExecutionEnvelope(sender string, exec *model.PaymentGatewayExecution) messaging.Envelope {
var payload model.PaymentGatewayExecution
if exec != nil {
payload = *exec
}
return &PaymentGatewayExecutionNotification{
Envelope: messaging.CreateEnvelope(sender, executionEvent()),
payload: payload,
}
}