Package to manage the Zoom API in Laravel
This package is for Laravel versions > 6. It may work on < 6 but its not something we have tried.
You can install the package via composer:
composer require macsidigital/laravel-zoom
Publish the configuration file
php artisan vendor:publish --provider="MacsiDigital\Zoom\Providers\ZoomServiceProvider"
This will create a zoom/config.php within your config directory, where you add value for api_key and api_secret.
Everything has been setup to be similar to Laravel syntax.
Unfortunately the Zoom API is not very uniform and is a bit all over the place, so at the minute there are a number of hacks to be able to get this to work. We will refactor and improve this.
We use relationships so you will need to check the Zoom API, for example to get a list of meetings or webinars you need to pass in a user id. WE use a little bit of relationship magic to acheive this in a more laravel type way.
So to get a list of meetings
$zoom = new \MacsiDigital\Zoom\Zoom;
$meetings = $zoom->user->find('[email protected]')->meetings()->all();
The find all function returns a Laravel Collection so you can use all the Laravel Collection magic
$zoom = new \MacsiDigital\Zoom\Zoom;
$users = $zoom->user->all();
There are very few ocassions in the API where you can filter the results, but where you can you can use the where function. Again check the API documentation for where you can add a query to the request. To action you would do like so
$zoom = new \MacsiDigital\Zoom\Zoom;
$thing = $zoom->thing->where('Name', '=', 'Test Name')->get();
You can also just passs the name and value if it is to equal
$zoom = new \MacsiDigital\Zoom\Zoom;
$thing = $zoom->thing->where('Name', 'Test Name')->get();
To only get a single item use the 'first' method
$zoom = new \MacsiDigital\Zoom\Zoom;
$thing = $zoom->thing->where('Name', 'Test Name')->first();
Just like Laravel we can use the 'find' method to return a single matched result on the ID. For users/registrants/panelists you can also use the email as well as the ID.
$zoom = new \MacsiDigital\Zoom\Zoom;
$meeting = $zoom->meeting->find('000000000');
We can create and update records using the save function, below is the full save script for a creation.
$user = $zoom->user->create([
'name' => 'Test Name',
'first_name' => 'First Name',
'last_name' => 'Last Name',
'email' => '[email protected]',
'password' => 'secret',
'type' => 1
]);
$meeting = $user->meetings()->create([
'type' => '2',
'start_time' => '2019-06-29T20:00:00Z'
]);
$registrant = $meeting->registrants()->create([
'email' => '[email protected]',
'first_name' => 'Test',
'last_name' => 'Registrant'
]);
There are also helper functions for adding sub objects
$meeting = $zoom->meeting->find('000000000');
$recurrance = $zoom->recurrance->create(['fields' => 'values']);
$meeting->addRecurrance($recurrance);
$meeting->save();
We cover the main resources
Meetings
Panelists
Registrants
Users
Webinars
But some also have sub cresources, like
Recurrance
Occurance
Settings (for meetings and webinars)
Tracking Fields
We aim to add additional resources/sub-resources over time
Please see CHANGELOG for more information what has changed recently.
Please see CONTRIBUTING for details.
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.