diff --git a/composer.json b/composer.json index d4d373a..fed8a59 100644 --- a/composer.json +++ b/composer.json @@ -30,7 +30,7 @@ } ], "require": { - "php": "^7.1.3|^8.0", + "php": "^7.4|^8.0", "laravel/framework": "^9.0|^10.0|^11.0", "mailjet/mailjet-apiv3-php": "^1.5.6|^1.5", "symfony/http-client": "^7.1", @@ -39,8 +39,9 @@ "require-dev": { "fakerphp/faker": "~1", "mockery/mockery": "0.9.*|^1.0", - "phpunit/phpunit": "~7.0|^8.0|^9|^10.0", - "orchestra/testbench": "3.6|^4.0|^5.0|^6.0|^8.0|^9.0" + "orchestra/testbench": "3.6|^4.0|^5.0|^6.0|^8.0|^9.0", + "phpcompatibility/php-compatibility": "^9.3", + "phpunit/phpunit": "~7.0|^8.0|^9|^10.0" }, "autoload": { "psr-4": { @@ -65,5 +66,9 @@ "config": { "sort-packages": true, "bin-dir": "bin" + }, + "scripts": { + "post-install-cmd": "\"bin/phpcs\" --config-set installed_paths vendor/phpcompatibility/php-compatibility", + "post-update-cmd" : "\"bin/phpcs\" --config-set installed_paths vendor/phpcompatibility/php-compatibility" } } diff --git a/src/Exception/MailjetException.php b/src/Exception/MailjetException.php index f77cf6e..3cdd0fc 100644 --- a/src/Exception/MailjetException.php +++ b/src/Exception/MailjetException.php @@ -12,17 +12,17 @@ class MailjetException extends \Exception /** * @var string */ - private $errorInfo; + private string $errorInfo; /** * @var string */ - private $errorMessage; + private string $errorMessage; /** * @var string */ - private $errorIdentifier; + private string $errorIdentifier; /** * https://dev.mailjet.com/guides/#about-the-mailjet-restful-api diff --git a/src/MailjetServiceProvider.php b/src/MailjetServiceProvider.php index f1e78f2..e846662 100644 --- a/src/MailjetServiceProvider.php +++ b/src/MailjetServiceProvider.php @@ -6,6 +6,7 @@ use Illuminate\Support\Facades\Mail; use Illuminate\Support\ServiceProvider; +use InvalidArgumentException; use Mailjet\LaravelMailjet\Services\MailjetService; use Symfony\Component\Mailer\Bridge\Mailjet\Transport\MailjetTransportFactory; use Symfony\Component\Mailer\Transport\Dsn; @@ -43,6 +44,10 @@ public function register(): void $call = $this->app['config']->get('services.mailjet.common.call', true); $options = $this->app['config']->get('services.mailjet.common.options', []); + if (!isset($config['key'], $config['secret'])) { + throw new InvalidArgumentException('The Mailjet service is not configured.'); + } + return new MailjetService($config['key'], $config['secret'], $call, $options); }); } diff --git a/src/Model/Campaign.php b/src/Model/Campaign.php index 386357b..18795fd 100644 --- a/src/Model/Campaign.php +++ b/src/Model/Campaign.php @@ -14,7 +14,7 @@ class Campaign extends Model /** * @var string */ - protected $fromEmail; + protected string $fromEmail; /** * @param string $fromEmail diff --git a/src/Model/CampaignDraft.php b/src/Model/CampaignDraft.php index bef8dfc..5169ba5 100644 --- a/src/Model/CampaignDraft.php +++ b/src/Model/CampaignDraft.php @@ -18,45 +18,54 @@ class CampaignDraft extends Model /** * @var string */ - protected $locale; + protected string $locale; /** * @var string */ - protected $sender; + protected string $sender; /** * @var string */ - protected $senderEmail; + protected string $senderEmail; /** * @var string */ - protected $subject; + protected string $subject; /** * @var string */ - protected $contactsListId; + protected string $contactsListId; /** * @var array|null */ - protected $content; + protected ?array $content; /** * @var string|null */ - protected $id; - - public function __construct(string $locale, - string $sender, - string $senderEmail, - string $subject, - string $contactsListId, - array $optionalProperties = []) - { + protected ?string $id; + + /** + * @param string $locale + * @param string $sender + * @param string $senderEmail + * @param string $subject + * @param string $contactsListId + * @param array $optionalProperties + */ + public function __construct( + string $locale, + string $sender, + string $senderEmail, + string $subject, + string $contactsListId, + array $optionalProperties = [] + ) { $this->locale = $locale; $this->sender = $sender; $this->senderEmail = $senderEmail; diff --git a/src/Model/Contact.php b/src/Model/Contact.php index 32bcb2b..85f3c94 100644 --- a/src/Model/Contact.php +++ b/src/Model/Contact.php @@ -24,17 +24,17 @@ class Contact extends Model /** * @var string */ - protected $email; + protected string $email; /** * @var string|null */ - protected $name; + protected ?string $name; /** * @var string|null */ - protected $action; + protected ?string $action; public function __construct(string $email, array $optionalProperties = []) { @@ -63,6 +63,7 @@ public function format(): array /** * Correspond to Email in Mailjet request. + * @return string */ public function getEmail(): string { @@ -76,7 +77,7 @@ public function getEmail(): string * * @return Contact */ - public function setEmail($email): Contact + public function setEmail(string $email): Contact { $this->email = $email; @@ -85,6 +86,7 @@ public function setEmail($email): Contact /** * Correspond to Name in MailJet request. + * @return string|null */ public function getName(): ?string { @@ -122,7 +124,7 @@ public function getAction(): ?string * * @return Contact */ - public function setAction($action): Contact + public function setAction(string $action): Contact { if (! $this->validateAction($action)) { throw new RuntimeException("$action: is not a valid Action."); diff --git a/src/Model/ContactMetadata.php b/src/Model/ContactMetadata.php index 6540f62..b9dd05c 100644 --- a/src/Model/ContactMetadata.php +++ b/src/Model/ContactMetadata.php @@ -20,12 +20,12 @@ class ContactMetadata implements Requestable /** * @var string */ - protected $name; + protected string $name; /** * @var string */ - protected $datatype; + protected string $datatype; public function __construct(string $name, string $datatype) { diff --git a/src/Model/ContactsList.php b/src/Model/ContactsList.php index cd95355..90784cf 100644 --- a/src/Model/ContactsList.php +++ b/src/Model/ContactsList.php @@ -19,18 +19,23 @@ class ContactsList extends Model /** * @var string */ - protected $listId; + protected string $listId; /** * @var string */ - protected $action; + protected string $action; /** * @var array */ - protected $contacts; + protected array $contacts; + /** + * @param string $listId + * @param string $action + * @param array $contacts + */ public function __construct(string $listId, string $action, array $contacts) { if (! $this->validateAction($action)) { @@ -62,6 +67,7 @@ public function format(): array /** * Get list id + * @return string */ public function getListId(): string { @@ -70,6 +76,7 @@ public function getListId(): string /** * Get action. + * @return string */ public function getAction(): string { @@ -78,10 +85,10 @@ public function getAction(): string /** * Set action. - * * @param string $action + * @return ContactsList */ - public function setAction($action): ContactsList + public function setAction(string $action): ContactsList { if (! $this->validateAction($action)) { throw new RuntimeException("$action: is not a valid Action."); @@ -94,6 +101,7 @@ public function setAction($action): ContactsList /** * Get contacts. + * @return array */ public function getContacts(): array { @@ -107,7 +115,7 @@ public function getContacts(): array * * @return bool */ - protected function validateAction($action): bool + protected function validateAction(string $action): bool { $actionsAvailable = [self::ACTION_ADDFORCE, self::ACTION_ADDNOFORCE, self::ACTION_REMOVE, self::ACTION_UNSUB]; diff --git a/src/Model/EventCallbackUrl.php b/src/Model/EventCallbackUrl.php index a863973..f04962e 100644 --- a/src/Model/EventCallbackUrl.php +++ b/src/Model/EventCallbackUrl.php @@ -25,51 +25,61 @@ class EventCallbackUrl implements Requestable /** * @var string|null */ - protected $apiKeyId; + protected ?string $apiKeyId; /** * @var string */ - protected $url; + protected string $url; /** * @var string */ - protected $type; + protected string $type; /** * @var string */ - protected $status; + protected string $status; /** * @var bool */ - protected $isBackup; + protected bool $isBackup; /** * @var int */ - protected $version; + protected int $version; /** * @var bool */ - protected $groupEvent; - - public function __construct($url, - $type = self::EVENT_TYPE_OPEN, - $groupEvent = false, - $isBackup = false, - $status = self::EVENT_STATUS_ALIVE, - $version = 1, - $apiKeyId = null + protected bool $groupEvent; + + /** + * @param string $url + * @param string $type + * @param bool $groupEvent + * @param bool $isBackup + * @param string $status + * @param int $version + * @param $apiKeyId + */ + public function __construct( + string $url, + string $type = self::EVENT_TYPE_OPEN, + bool $groupEvent = false, + bool $isBackup = false, + string $status = self::EVENT_STATUS_ALIVE, + int $version = 1, + $apiKeyId = null ) { - if (! $this->validateType($type)) { + if (!$this->validateType($type)) { throw new RuntimeException("$type: is not a valid event type."); } - if (! $this->validateStatus($status)) { + if (!$this->validateStatus($status)) { throw new RuntimeException("$status: is not a valid event status."); } diff --git a/src/Model/Model.php b/src/Model/Model.php index f3e040a..bb31840 100644 --- a/src/Model/Model.php +++ b/src/Model/Model.php @@ -9,7 +9,7 @@ abstract class Model implements Requestable /** * @var array */ - protected $optionalProperties; + protected array $optionalProperties; /** * Format MailJet API request. diff --git a/src/Model/Template.php b/src/Model/Template.php index f17c3bf..d4aeef1 100644 --- a/src/Model/Template.php +++ b/src/Model/Template.php @@ -14,18 +14,22 @@ class Template extends Model /** * @var string */ - protected $name; + protected string $name; /** * @var array|null */ - protected $content; + protected ?array $content; /** * @var string|null */ - protected $id; + protected ?string $id; + /** + * @param string $name + * @param array $optionalProperties + */ public function __construct(string $name, array $optionalProperties = []) { $this->name = $name; diff --git a/src/Providers/CampaignDraftServiceProvider.php b/src/Providers/CampaignDraftServiceProvider.php index d0de3dc..43126a3 100644 --- a/src/Providers/CampaignDraftServiceProvider.php +++ b/src/Providers/CampaignDraftServiceProvider.php @@ -16,7 +16,7 @@ class CampaignDraftServiceProvider extends ServiceProvider * * @var bool */ - protected $defer = true; + protected bool $defer = true; /** * Bootstrap the application services. diff --git a/src/Providers/CampaignServiceProvider.php b/src/Providers/CampaignServiceProvider.php index 150cf6c..f6a58a1 100644 --- a/src/Providers/CampaignServiceProvider.php +++ b/src/Providers/CampaignServiceProvider.php @@ -16,7 +16,7 @@ class CampaignServiceProvider extends ServiceProvider * * @var bool */ - protected $defer = true; + protected bool $defer = true; /** * Bootstrap the application services. diff --git a/src/Providers/ContactMetadataServiceProvider.php b/src/Providers/ContactMetadataServiceProvider.php index 38d3cff..0ece654 100644 --- a/src/Providers/ContactMetadataServiceProvider.php +++ b/src/Providers/ContactMetadataServiceProvider.php @@ -16,7 +16,7 @@ class ContactMetadataServiceProvider extends ServiceProvider * * @var bool */ - protected $defer = true; + protected bool $defer = true; /** * Bootstrap the application services. diff --git a/src/Providers/ContactsListServiceProvider.php b/src/Providers/ContactsListServiceProvider.php index 14a8917..d8586da 100644 --- a/src/Providers/ContactsListServiceProvider.php +++ b/src/Providers/ContactsListServiceProvider.php @@ -16,7 +16,7 @@ class ContactsListServiceProvider extends ServiceProvider * * @var bool */ - protected $defer = true; + protected bool $defer = true; /** * Bootstrap the application services. diff --git a/src/Providers/ContactsServiceProvider.php b/src/Providers/ContactsServiceProvider.php index 9e810a0..38a68b4 100644 --- a/src/Providers/ContactsServiceProvider.php +++ b/src/Providers/ContactsServiceProvider.php @@ -9,14 +9,19 @@ class ContactsServiceProvider extends ServiceProvider { - protected $defer = true; + /** + * Indicates if loading of the provider is deferred. + * + * @var bool + */ + protected bool $defer = true; /** * Bootstrap the application services. * * @return void */ - public function boot() + public function boot(): void { } @@ -48,4 +53,4 @@ public function provides() { return [ContactsV4Service::class]; } -} \ No newline at end of file +} diff --git a/src/Providers/EventCallbackUrlServiceProvider.php b/src/Providers/EventCallbackUrlServiceProvider.php index a7f6d67..5ce7670 100644 --- a/src/Providers/EventCallbackUrlServiceProvider.php +++ b/src/Providers/EventCallbackUrlServiceProvider.php @@ -16,7 +16,7 @@ class EventCallbackUrlServiceProvider extends ServiceProvider * * @var bool */ - protected $defer = true; + protected bool $defer = true; /** * Bootstrap the application services. diff --git a/src/Providers/MailjetClientServiceProvider.php b/src/Providers/MailjetClientServiceProvider.php index e7eb098..9b249d5 100644 --- a/src/Providers/MailjetClientServiceProvider.php +++ b/src/Providers/MailjetClientServiceProvider.php @@ -15,7 +15,7 @@ class MailjetClientServiceProvider extends ServiceProvider * * @var bool */ - protected $defer = true; + protected bool $defer = true; /** * Bootstrap the application services. diff --git a/src/Providers/TemplateServiceProvider.php b/src/Providers/TemplateServiceProvider.php index 8080536..748fbdc 100644 --- a/src/Providers/TemplateServiceProvider.php +++ b/src/Providers/TemplateServiceProvider.php @@ -16,7 +16,7 @@ class TemplateServiceProvider extends ServiceProvider * * @var bool */ - protected $defer = true; + protected bool $defer = true; /** * Bootstrap the application services. diff --git a/src/Services/CampaignDraftService.php b/src/Services/CampaignDraftService.php index c463b07..4ce6e09 100644 --- a/src/Services/CampaignDraftService.php +++ b/src/Services/CampaignDraftService.php @@ -18,7 +18,7 @@ class CampaignDraftService implements CampaignDraftContract /** * @var MailjetService */ - protected $mailjet; + protected MailjetService $mailjet; public function __construct(MailjetService $mailjet) { @@ -63,6 +63,7 @@ public function findByCampaignDraftId(string $id): array /** * create a new fresh CampaignDraft * @param Campaigndraft $campaignDraft + * @return array * @throws MailjetException */ public function create(CampaignDraft $campaignDraft): array diff --git a/src/Services/CampaignService.php b/src/Services/CampaignService.php index 0d421e0..3627973 100644 --- a/src/Services/CampaignService.php +++ b/src/Services/CampaignService.php @@ -17,7 +17,7 @@ class CampaignService implements CampaignContract /** * @var MailjetService */ - protected $mailjet; + protected MailjetService $mailjet; public function __construct(MailjetService $mailjet) { diff --git a/src/Services/ContactMetadataService.php b/src/Services/ContactMetadataService.php index 47f3a35..cf35b3a 100644 --- a/src/Services/ContactMetadataService.php +++ b/src/Services/ContactMetadataService.php @@ -17,7 +17,7 @@ class ContactMetadataService implements ContactMetadataContract /** * @var MailjetService */ - protected $mailjet; + protected MailjetService $mailjet; public function __construct(MailjetService $mailjet) { diff --git a/src/Services/ContactsListService.php b/src/Services/ContactsListService.php index e66b4df..79e1954 100644 --- a/src/Services/ContactsListService.php +++ b/src/Services/ContactsListService.php @@ -24,7 +24,7 @@ class ContactsListService implements ContactsListContract /** * @var MailjetService */ - protected $mailjet; + protected MailjetService $mailjet; public function __construct(MailjetService $mailjet) { diff --git a/src/Services/ContactsV4Service.php b/src/Services/ContactsV4Service.php index 367a2f9..6fc52f0 100644 --- a/src/Services/ContactsV4Service.php +++ b/src/Services/ContactsV4Service.php @@ -15,7 +15,7 @@ class ContactsV4Service implements ContactsV4Contract * Mailjet client * @var MailjetService */ - protected $mailjet; + protected MailjetService $mailjet; /** * @param MailjetService $mailjet diff --git a/src/Services/EventCallbackUrlService.php b/src/Services/EventCallbackUrlService.php index c08d727..a207ee7 100644 --- a/src/Services/EventCallbackUrlService.php +++ b/src/Services/EventCallbackUrlService.php @@ -17,7 +17,7 @@ class EventCallbackUrlService implements EventCallbackUrlContract /** * @var MailjetService */ - protected $mailjet; + protected MailjetService $mailjet; public function __construct(MailjetService $mailjet) { diff --git a/src/Services/MailjetService.php b/src/Services/MailjetService.php index 5e4b0db..6e84cda 100644 --- a/src/Services/MailjetService.php +++ b/src/Services/MailjetService.php @@ -15,7 +15,7 @@ class MailjetService implements MailjetServiceContract /** * @var Client */ - private $client; + private Client $client; /** * @param string $key diff --git a/src/Services/TemplateService.php b/src/Services/TemplateService.php index bb738b8..07ded3b 100644 --- a/src/Services/TemplateService.php +++ b/src/Services/TemplateService.php @@ -17,7 +17,7 @@ class TemplateService implements TemplateServiceContract /** * @var MailjetService */ - protected $mailjet; + protected MailjetService $mailjet; /** * @param MailjetService $mailjet