AliExpress TOP client
src | ||
tests | ||
.editorconfig | ||
.env.dist | ||
.gitignore | ||
.travis.yml | ||
composer.json | ||
LICENSE | ||
phpcs.xml.dist | ||
phpmd.xml | ||
phpunit.xml.dist | ||
README.md |
AliExpress TOP API client
API client implementation for AliExpress TOP.
Usage
- This library uses
php-http/httplug
under the hood. If you don't want to bother with details, just install library and it's dependencies through Composer:
composer require php-http/curl-client nyholm/psr7 php-http/message retailcrm/aliexpress-top-client
Details about those third-party libraries and why you need to install them can be found here.
- Instantiate client like that:
use RetailCrm\Component\AppData;
use RetailCrm\Builder\ClientBuilder;
use RetailCrm\Builder\ContainerBuilder;
$appData = new AppData(AppData::OVERSEAS_ENDPOINT, 'appKey', 'appSecret');
$client = ClientBuilder::create()
->setContainer(ContainerBuilder::create()->build())
->setAppData($appData)
->build();
Details
This library uses Container pattern under the hood. You can pass additional dependencies using ContainerBuilder
. For example:
use Http\Client\Curl\Client;
use Nyholm\Psr7\Factory\Psr17Factory;
use RetailCrm\Component\AppData;
use RetailCrm\Component\Environment;
use RetailCrm\Component\Logger\StdoutLogger;
use RetailCrm\Builder\ClientBuilder;
use RetailCrm\Builder\ContainerBuilder;
$client = new Client();
$logger = new StdoutLogger();
$factory = new Psr17Factory();
$authenticator = new TokenAuthenticator('appKey', 'token');
$appData = new AppData(AppData::OVERSEAS_ENDPOINT, 'appKey', 'appSecret');
$container = ContainerBuilder::create()
->setEnv(Environment::TEST)
->setClient($client)
->setLogger($logger)
->setStreamFactory($factory)
->setRequestFactory($factory)
->setUriFactory($factory)
->build();
$client = ClientBuilder::create()
->setContainer($container)
->setAppData($appData)
->build();
Logger should implement Psr\Log\LoggerInterface
(PSR-3), HTTP client should implement Psr\Http\Client\ClientInterface
(PSR-18), HTTP objects must be compliant to PSR-7.
You can use your own container - it must be compliant to PSR-11. But this is strongly discouraged because it'll be much easier to just integrate library with your own application, and your own DI system.