SDK PHP et Laravel

Le package Composer expose des modèles typés et une classe par groupe d’opérations. Il fonctionne dans Laravel comme dans une application PHP sans framework.

Installation

composer require lalternative/spore

Le SDK requiert PHP 8.1 ou plus récent et utilise Guzzle pour les appels HTTP.

Configuration PHP

use GuzzleHttp\Client;
use Lalternative\Spore\Api\MessagingApi;
use Lalternative\Spore\Configuration;
 
$configuration = Configuration::getDefaultConfiguration()
    ->setApiKey('Authorization', $_ENV['SPORE_API_KEY'])
    ->setApiKeyPrefix('Authorization', 'Bearer');
 
$spore = new MessagingApi(new Client(), $configuration);

Intégration Laravel

Déclarez la clé dans .env, puis exposez le client comme singleton dans un service provider. Votre code métier dépend alors de MessagingApi, sans reconstruire la configuration à chaque envoi.

// config/services.php
'spore' => ['key' => env('SPORE_API_KEY')],
 
// app/Providers/AppServiceProvider.php
$this->app->singleton(MessagingApi::class, function () {
    $configuration = Configuration::getDefaultConfiguration()
        ->setApiKey('Authorization', config('services.spore.key'))
        ->setApiKeyPrefix('Authorization', 'Bearer');
 
    return new MessagingApi(new Client(), $configuration);
});

Envoyer un email

use Illuminate\Support\Str;
use Lalternative\Spore\Model\SendEmailSendEmailRequest;
 
$message = new SendEmailSendEmailRequest([
    'from' => 'hello@votredomaine.fr',
    'to' => ['alex@example.com'],
    'subject' => 'Bienvenue',
    'html' => '<p>Votre compte est prêt.</p>',
]);
 
$result = $spore->sendEmail($message, (string) Str::uuid());

Le second argument devient l’en-tête Idempotency-Key. Utilisez une valeur stable par action métier, notamment dans un job Laravel susceptible d’être retenté.

Gérer les erreurs

use Lalternative\Spore\ApiException;
 
try {
    $result = $spore->sendEmail($message, $jobId);
} catch (ApiException $error) {
    report($error);
}

Aller plus loin