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  }