iOS Configuration
ConioB2BSDK
is divided into multiple services, each one providing a different set of APIs.
Each service is independent and can be initialized through a ServiceConfiguration
configuration using its own factory.
let conioConfig = ConioConfiguration.makeTestConfiguration(baseUrl: ...)
let userService = UserServiceFactory().makeServiceUsingConfiguration(conioConfig)
// User Service ready to be used
userService
.login(with: ...)
.asPublisher()
.sink { ... }
// ...
Otherwise, ConioB2BServiceFactory
factory leverages on a single ServiceFactory
to make the requested Service
.
let conioConfig = ConioConfiguration.makeTestConfiguration(baseUrl: ...)
let userService = ConioB2BServiceFactory.makeServiceUsingFactory(UserServiceFactory(), serviceConfiguration: conioConfig)
let walletService = ConioB2BServiceFactory.makeServiceUsingFactory(WalletServiceFactory(), serviceConfiguration: conioConfig)
let activitiesService = ConioB2BServiceFactory.makeServiceUsingFactory(ActivitiesServiceFactory(), serviceConfiguration: conioConfig)
// ...
Usage
The single Service
API is initialized with its specific Params
parameters (if necessary) and the output can be read through its OperationResult
result.
// ...
let params = LoginParams
.make(
username: ...,
password: ...,
cryptoRequest: ...
)
userService
.login(with: params)
.asPublisher()
.sink { result in
switch result {
case .success:
// ...
case .failure(let error):
// ...
}
}
.store(in: ...)
// ...
Each API is returned as ServiceConsumer
and can be consumed in three different ways:
asPublisher()
, used to handle the result in a declarative way leveraging on Combine;asCallback()
, used to handle the result in closure/lambda style as self-contained block;run()
, used to execute the API without handling the result.
// asPublisher()
let cancellable = userService
.logout()
.asPublisher()
.sink { result in
// ...
}
// asCallback()
userService
logout()
.asCallback { result in
// ...
}
// run()
userService
.logout()
.run()