PHP client to interact with Bee's plugin API
You can install the package via composer:
composer require kirschbaum-development/bee-plugin-php-client
First thing you will need is to instantiate the
Bee base class and setup the API token. You can grab the API token by logging in into the Developer portal and going to the "details" of your application.
use KirschbaumDevelopment\Bee\Bee; $bee = new Bee(new \GuzzleHttp\Client); $bee->setApiToken('your-api-token-here');
This API allows you to post the JSON content generated on the Bee editor, and it will return the rendered HTML of the JSON. Reference: https://docs.beefree.io/message-services-api-reference/#html
$beeEditorData = ; // this will be the JSON generated using the editor $html = $bee->html($beeEditorData);
This API allows you to post the HTML content and get an URL with a PDF created from the HTML. Reference: https://docs.beefree.io/message-services-api-reference/#pdf
$pdf = $bee->pdf([ 'html' => $html, // HTML generated using the HTML API (required) 'page_size' => 'Letter', // (optional) 'page_orientation' => 'Landscape', // (optional) ]); // then, you can call these methods: $pdf->getUrl(); $pdf->getFilename(); $pdf->getPageSize(); $pdf->getPageOrientation(); $pdf->getContentType();
This API allows you to post the HTML content and get an URL with a PDF created from the HTML. Reference: https://docs.beefree.io/message-services-api-reference/#image
$image = $bee->image([ 'html' => $html, // HTML generated using the HTML API (required) 'width' => 500, // (required) 'height' => 400, // (optional) 'file_type' => 'jpg', ]); // then, you can save the image content somewhere, some examples on how you may do this: file_put_contents('/path/to/storage/image.jpg', $image); // on Laravel with Storage object: Storage::put('/path/to/storage/image.jpg', $image);
To initialize Bee Editor you may need an access token. You can use
BeeAuth to easily generate that. You can grab the Client ID and Secret by logging in into the Developer portal and going to the "details" of your application.
use KirschbaumDevelopment\Bee\BeeAuth; $beeAuth = new BeeAuth(new \GuzzleHttp\Client); $beeAuth->setClientId('your-client-id-here'); $beeAuth->setClientSecret('your-client-secret-here'); $token = $beeAuth->generateToken(); // then you can use the following methods: $token->getAccessToken(); $token->getRefreshToken(); $token->getExpires();
Auth tokens are valid for 5 minutes. If you want to cache your tokens for as long as possible, you will need to pass a PSR-16 compatible cache implementation. Laravel, Symfony and all major frameworks are already compatible with this interface. To enable the cache, you only need to call the
setCache method passing a
If you use Laravel,
BeePluginServiceProvider will be auto-registered if you use Laravel package discovery. Otherwise, you can manually register the following provider:
'providers' => [ // ... KirschbaumDevelopment\Bee\Laravel\BeePluginServiceProvider::class, ],
This will make sure that any time you ask Laravel for
KirschbaumDevelopment\Bee\BeeAuth using the Laravel container (e.g.
app(Bee::class)), Guzzle will be automatically injected and also the API token and Client ID/Secret will be injected into the classes.
The config values will be extracted from the following config:
.services.bee. So, we'll use the following conventions:
If you don't want to use this config, you can always pass the values manually.
Laravel service provider will also automatically inject Laravel's cache implementation on
BeeAuth, so your auth tokens will be cached for as long as possible.
If you are writing integration tests, but don't want your tests making requests to Bee to get credentials, we have a little helper that can help you. Just run the following code:
use KirschbaumDevelopment\Bee\Laravel\BeeAuthMock; BeeAuthMock::init();
With this, any time you call
BeeAuth::generateToken() in your code you will receive the same response you would receive, but with some fake tokens and without making any HTTP requests.
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see License File for more information.