flamingo.me/flamingo-commerce/v3@v3.11.0/checkout/domain/placeorder/states/trigger_client_sdk.go (about) 1 package states 2 3 import ( 4 "context" 5 "encoding/gob" 6 "net/url" 7 8 "flamingo.me/flamingo-commerce/v3/checkout/domain/placeorder/process" 9 "flamingo.me/flamingo-commerce/v3/payment/application" 10 "go.opencensus.io/trace" 11 ) 12 13 type ( 14 // TriggerClientSDK state 15 TriggerClientSDK struct { 16 paymentService *application.PaymentService 17 validator process.PaymentValidatorFunc 18 } 19 20 // TriggerClientSDKData holds the data which must be sent to the client via SDK 21 TriggerClientSDKData struct { 22 URL *url.URL 23 Data string 24 } 25 ) 26 27 var _ process.State = TriggerClientSDK{} 28 29 func init() { 30 gob.Register(TriggerClientSDKData{}) 31 } 32 33 // NewTriggerClientSDKStateData creates data required for this state 34 func NewTriggerClientSDKStateData(url *url.URL, data string) process.StateData { 35 return process.StateData(TriggerClientSDKData{ 36 URL: url, 37 Data: data, 38 }) 39 } 40 41 // Inject dependencies 42 func (r *TriggerClientSDK) Inject( 43 paymentService *application.PaymentService, 44 validator process.PaymentValidatorFunc, 45 ) *TriggerClientSDK { 46 r.paymentService = paymentService 47 r.validator = validator 48 49 return r 50 } 51 52 // Name get state name 53 func (TriggerClientSDK) Name() string { 54 return "TriggerClientSDK" 55 } 56 57 // Run the state operations 58 func (r TriggerClientSDK) Run(ctx context.Context, p *process.Process) process.RunResult { 59 ctx, span := trace.StartSpan(ctx, "placeorder/state/TriggerClientSDK/Run") 60 defer span.End() 61 62 return r.validator(ctx, p, r.paymentService) 63 } 64 65 // Rollback the state operations 66 func (r TriggerClientSDK) Rollback(_ context.Context, _ process.RollbackData) error { 67 return nil 68 } 69 70 // IsFinal if state is a final state 71 func (r TriggerClientSDK) IsFinal() bool { 72 return false 73 }