github.com/Ingenico-ePayments/connect-sdk-go@v0.0.0-20240318153750-1f8cd329b9c9/Factory.go (about)

     1  package connectsdk
     2  
     3  import (
     4  	"github.com/Ingenico-ePayments/connect-sdk-go/communicator"
     5  	"github.com/Ingenico-ePayments/connect-sdk-go/configuration"
     6  	"github.com/Ingenico-ePayments/connect-sdk-go/defaultimpl"
     7  )
     8  
     9  // CreateConfiguration creates a CommunicatorConfiguration with default settings and the given apiKeyID and secretAPIKey
    10  func CreateConfiguration(apiKeyID, secretAPIKey, integrator string) (*configuration.CommunicatorConfiguration, error) {
    11  	newConf := configuration.DefaultConfiguration(apiKeyID, secretAPIKey, integrator)
    12  
    13  	return &newConf, nil
    14  }
    15  
    16  // CreateSessionBuilder creates a SessionBuilder with default settings and the given apiKeyID and secretAPIKey
    17  func CreateSessionBuilder(apiKeyID, secretAPIKey, integrator string) (*communicator.SessionBuilder, error) {
    18  	configuration, err := CreateConfiguration(apiKeyID, secretAPIKey, integrator)
    19  	if err != nil {
    20  		return nil, err
    21  	}
    22  
    23  	return CreateSessionBuilderFromConfiguration(configuration)
    24  }
    25  
    26  // CreateSessionBuilderFromConfiguration creates a SessionBuilder with the given CommunicatorConfiguration
    27  func CreateSessionBuilderFromConfiguration(configuration *configuration.CommunicatorConfiguration) (*communicator.SessionBuilder, error) {
    28  	builder, err := communicator.NewSessionBuilder()
    29  	if err != nil {
    30  		return nil, err
    31  	}
    32  
    33  	connection, err := defaultimpl.NewDefaultConnection(configuration.SocketTimeout,
    34  		configuration.ConnectTimeout,
    35  		configuration.KeepAliveTimeout,
    36  		configuration.IdleTimeout,
    37  		configuration.MaxConnections,
    38  		configuration.Proxy)
    39  	if err != nil {
    40  		return nil, err
    41  	}
    42  
    43  	metaDataProviderBuilder := communicator.NewMetaDataProviderBuilder(configuration.Integrator)
    44  	metaDataProviderBuilder.ShoppingCartExtension = configuration.ShoppingCartExtension
    45  
    46  	metaDataProvider, err := metaDataProviderBuilder.Build()
    47  	if err != nil {
    48  		return nil, err
    49  	}
    50  
    51  	authenticator, err := defaultimpl.NewDefaultAuthenticator(configuration.AuthorizationType,
    52  		configuration.APIKeyID,
    53  		configuration.SecretAPIKey)
    54  	if err != nil {
    55  		return nil, err
    56  	}
    57  
    58  	return builder.WithAPIEndpoint(&configuration.APIEndpoint).WithConnection(connection).WithMetaDataProvider(metaDataProvider).WithAuthenticator(authenticator), nil
    59  }
    60  
    61  // CreateCommunicator creates a Communicator with default settings and the given apiKeyID and secretAPIKey
    62  func CreateCommunicator(apiKeyID, secretAPIKey, integrator string) (*communicator.Communicator, error) {
    63  	configuration, err := CreateConfiguration(apiKeyID, secretAPIKey, integrator)
    64  	if err != nil {
    65  		return nil, err
    66  	}
    67  
    68  	return CreateCommunicatorFromConfiguration(configuration)
    69  }
    70  
    71  // CreateCommunicatorFromConfiguration creates a Communicator with the given CommunicatorConfiguration
    72  func CreateCommunicatorFromConfiguration(configuration *configuration.CommunicatorConfiguration) (*communicator.Communicator, error) {
    73  	builder, err := CreateSessionBuilderFromConfiguration(configuration)
    74  	if err != nil {
    75  		return nil, err
    76  	}
    77  
    78  	session, err := builder.Build()
    79  	if err != nil {
    80  		return nil, err
    81  	}
    82  
    83  	return CreateCommunicatorFromSession(session)
    84  }
    85  
    86  // CreateCommunicatorFromSession creates a Communicator with the given Session
    87  func CreateCommunicatorFromSession(session *communicator.Session) (*communicator.Communicator, error) {
    88  	marshaller, err := defaultimpl.NewDefaultMarshaller()
    89  	if err != nil {
    90  		return nil, err
    91  	}
    92  
    93  	return communicator.NewCommunicator(session, marshaller)
    94  }
    95  
    96  // CreateClient creates a Client with default settings and the given apiKeyID and secretAPIKey
    97  func CreateClient(apiKeyID, secretAPIKey, integrator string) (*Client, error) {
    98  	communicator, err := CreateCommunicator(apiKeyID, secretAPIKey, integrator)
    99  	if err != nil {
   100  		return nil, err
   101  	}
   102  
   103  	return CreateClientFromCommunicator(communicator)
   104  }
   105  
   106  // CreateClientFromConfiguration creates a Client with the given CommunicatorConfiguration
   107  func CreateClientFromConfiguration(configuration *configuration.CommunicatorConfiguration) (*Client, error) {
   108  	communicator, err := CreateCommunicatorFromConfiguration(configuration)
   109  	if err != nil {
   110  		return nil, err
   111  	}
   112  
   113  	return CreateClientFromCommunicator(communicator)
   114  }
   115  
   116  // CreateClientFromSession creates a Client with the given Session
   117  func CreateClientFromSession(session *communicator.Session) (*Client, error) {
   118  	communicator, err := CreateCommunicatorFromSession(session)
   119  	if err != nil {
   120  		return nil, err
   121  	}
   122  
   123  	return CreateClientFromCommunicator(communicator)
   124  }
   125  
   126  // CreateClientFromCommunicator creates a Client with the given Communicator
   127  func CreateClientFromCommunicator(communicator *communicator.Communicator) (*Client, error) {
   128  	return NewClient(communicator)
   129  }