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 }