dmt-software / laposta-api
Client to consume the Laposta API
Installs: 5 956
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: >=7.4
- ext-json: *
- dmt-software/command-bus-validator: ^1.0
- dmt-software/http-client-middleware: ^0.1.3 | ^1.0 | ^2.0
- doctrine/annotations: ^2.0
- jms/serializer: ^3.23
- league/tactician: ^1.0
- psr/http-factory: ^1.0
- psr/http-message: ^1.0 | ^2.0
- symfony/console: >=5.4
Requires (Dev)
- guzzlehttp/guzzle: ^7.5
- guzzlehttp/psr7: ^2.4
- phpunit/phpunit: 9.6.6
- psr/container: >=1.1
README
An Object-Oriented client to consume the Laposta API.
Install
composer require dmt-software/laposta-api
Configure
After installing this package you need to configure it. The quickest way to do this is simply add a config file and
use it to load the config into a Config
instance.
// file: config.php return [ 'apiKey' => 'JdMtbsMq2jqJdQZD9AHC', 'customFieldsClasses' => [], 'httpClient' => \GuzzleHttp\Client::class, 'requestFactory' => \GuzzleHttp\Psr7\HttpFactory::class, ];
Generate entity
The next step is to generate an entity for the custom fields for the mailing list(s).
vendor/bin/laposta generate:list-fields config.php -l BaImMu3JZA
More in depth information about the custom fields can be found in the subscribers documentation.
Usage
Initiate a Client
The easiest way to create a client instance is using the factories in this package. These factories can also be used (as guideline) in a dependency injection container.
use DMT\Laposta\Api\Clients\Subscribers; use DMT\Laposta\Api\Config; use DMT\Laposta\Api\Factories\CommandBusFactory; $commandBus = CommandBusFactory::create(Config::load('config.php')); $client = new Subscribers($commandBus);
Subscribe a user to a mailing list
use DMT\CommandBus\Validator\ValidationException; use DMT\Laposta\Api\Entity\BaseCustomFields; use DMT\Laposta\Api\Entity\Subscriber; use DMT\Laposta\Api\Clients\Subscribers; use Psr\Http\Client\ClientExceptionInterface; try { /** @var BaseCustomFields $customFields The generated entity for your list */ $subscriber = new Subscriber(); $subscriber->listId = 'BaImMu3JZA'; $subscriber->email = 'user@example.com'; $subscriber->customFields = $customFields; $subscriber->customFields->name = 'John Do'; /** @var Subscribers $client */ $client->create($subscriber, Subscribers::OPTION_SUPPRESS_EMAIL_NOTIFICATION); } catch (ValidationException $exception) { // input was wrong } catch (ClientExceptionInterface $exception) { // error response }
More on how to use this package can be found in the client documentation.