The most comprehensive, feature-packed and easy to use PHP class for bunny.net ( BunnyCDN) pull, video streaming, DNS and storage zones API.
This class whilst having a main focus on storage zone interaction includes pull zone features, DNS, Video streaming and more. Combining API with FTP managing and using your BunnyNet storage zones just got easier.
- Features
- Installing & usage
- Pullzone
- List all pullzones
- List a pullzone
- Purge pullzone
- Delete pullzone
- List pullzone hostnames
- Add hostname to pullzone
- Remove hostname from pullzone
- Change ssl status for pullzone
- Add IP block for pullzone
- Remove IP block for pullzone
- List blocked IPs for pullzone
- Purge cache for a URL
- Pullzone logs are array
- Storage
- Connect to storage zone
- List all storage zones
- Add storage zone
- Delete storage zone
- Get directory size
- Return current directory
- Change directory
- Check folder exists
- Check file exists
- Move to parent directory
- Create folder in current directory
- Delete folder
- Delete file
- Delete all files in a folder
- Rename a file
- Move a file
- Download a file
- Download all files in a directory
- Upload a file
- Upload all files from a local folder
- Return storage zone files and folder data
- Return storage zone directory files formatted
- Return storage zone directory folders formatted
- Return storage zone directory file and folders formatted
- Video streaming
- Set video library
- Get video collections
- Set video collection GUID
- Get streams for collection
- Update stream collection
- Delete stream collection
- Create stream collection
- List videos in library
- Get video information
- Delete video
- Create video
- Create video for collection
- Upload video
- Set thumbnail
- Get video resolutions
- Get video size
- Add captions
- Delete captions
- DNS
- Get all DNS zones
- Get DNS zone
- Add DNS zone
- Add DNS zone full
- Delete DNS zone
- Get DNS zone statistics
- Update DNS zone nameservers
- Update DNS zone SOA email
- Add DNS record
- Add DNS A record
- Add DNS AAAA record
- Add DNS CNAME record
- Add DNS MX record
- Add DNS TXT record
- Add DNS NS record
- Add DNS redirect record
- Update DNS A record
- Update DNS AAAA record
- Disable DNS record
- Enable DNS record
- Delete DNS record
- Misc
- Fixed dirSize() needing a slash
- Fixed createFolder() throwing warning messages
- Added fileExists()
- PHP 8.2
For Pull zone, billing and statistics API interaction you will need your BunnyNet API key, this is found in your dashboard in the My Account section.
The video streaming API you need the video stream library access key which is found in the settings for the library at bunny.net.
If you want to interact with storage zones you will need your BunnyCDN API key set and the name of the storage zone.
You can get this with listStorageZones()
as it returns all the storage zone data/info for the account.
- List storage zones
- Add/create storage zone
- Delete storage zone
- Create folder in storage zone
- Delete folder in storage zone
- Delete file in storage zone
- Delete all files in a folder in storage zone
- Download a file from storage zone
- Download a file from storage zone with progress percentage
- Download all files in a folder from storage zone
- Upload file to storage zone
- Upload file to storage zone with progress percentage
- Upload all files in a folder to storage zone
- Rename file or folder in storage zone
- Move file in storage zone
- Get file size in storage zone
- Get directory size in storage zone
- Navigate/List directories in storage zone
- List all from storage zone directory
- List all files formatted from storage zone directory
- List all folders formatted from storage zone directory
- List all formatted from storage zone directory
- Create, edit and delete videos
- Create, edit and delete DNS zones
- Get usage statistics
- Get billing data
- View balance
- View monthly charge
- View monthly charge breakdown
- Apply coupon code
- List pull zones
- Get pull zone
- Add pull zone
- Update pull zone
- Delete pull zone
- Purge pull zone
- Add hostname to pull zone
- Remove hostname from pull zone
- Set force SSL for pull zone
- List pull zone HTTP access logs
- Calculate costs
Install with composer:
composer require corbpie/bunny-cdn-api
Use like:
require __DIR__ . '/vendor/autoload.php';
use Corbpie\BunnyCdn\BunnyAPIPull;
$bunny = new BunnyAPIPull();//Initiate the class
echo $bunny->listPullZones();
option 1 (preferred)
Line 12 bunnyAPI.php
const API_KEY = 'XXXX-XXXX-XXXX';
option 2
With apiKey()
(needs setting with each calling of class)
$bunny->apiKey('XXXX-XXXX-XXXX');//Bunny api key
require __DIR__ . '/vendor/autoload.php';
use Corbpie\BunnyCdn\BunnyAPIStorage;
$bunny = new BunnyAPIStorage();
Storage zone name and access key for storage zone interaction (not needed if just using pull zone functions)
Set $access_key = ''
to obtain key automatically (storage name must be accurate)
$bunny->zoneConnect($storagename, $access_key);
$storagename
name of storage zone string
$access_key
key/password to storage zone string
optional
List storage zones
$bunny->listStorageZones();
returns array
Add a storage zone
$bunny->addStorageZone($newstoragezone);
$newstoragezone
name of storage zone to create string
Delete a storage zone
$bunny->deleteStorageZone($id);
$id
id of storage zone to delete int
Get directory size
$dir = "media/images/dogs";
$bunny->dirSize($dir);
$dir
directory to get size of string
Return current directory
$bunny->currentDir();
returns string
Change directory
$dir = "media/images/dogs";
$bunny->changeDir($dir);
$dir
directory navigation (FTP rules) string
Check folder exists
$bunny->folderExists($path);
$path
the folder path string
Returns bool
Check file exists
$file = "media/images/dogs/collie.jpg";
$bunny->fileExists($file);
$file
the full file path including the filename string
Returns bool
Move to the parent directory
$bunny->moveUpOne();
Create a folder in the current directory
$new_folder = "dogs"
$bunny->createFolder($new_folder);
$new_folder
Create a folder in the current directory string
Delete folder
$bunny->deleteFolder($folder_name);
$folder_name
Name of the folder to delete (folder must be empty) string
Delete a file
$bunny->deleteFile($name);
$name
Name of file to delete string
Delete all files in a folder
$bunny->deleteAllFiles($dir);
$dir
Directory to delete all files in string
Rename a file
BunnyCDN does not allow for ftp_rename so file copied to a new name and then the old file is deleted.
$directory = "media/images/dogs";
$old_file_name = "collie.jpg";
$new_file_name = "poodle.jpg";
$bunny->renameFile($directory, $old_file_name, $new_file_name);
$directory
Directory that contains the file string
$old_name
Object that is being renamed string
$new_name
New name for object string
Move a file
$bunny->moveFile($file, $move_to);
$file
File to move string
$move_to
Directory to move file to string
Download a file
$bunny->downloadFile($save_as, $get_file, $mode);
$save_as
Save file as string
$get_file
File to download string
$mode
FTP mode to use INT
Download all files in a directory
$bunny->downloadAll($dir_dl_from, $dl_into, $mode);
$dir_dl_from
Directory to download all from string
$dl_into
Download into string
$mode
FTP mode to use INT
Upload a file
$bunny->uploadFile($upload, $upload_as, $mode);
$upload
File to upload string
$upload_as
Upload as string
$mode
FTP mode to use INT
Upload all files from a local folder
$bunny->uploadAllFiles($dir, $place, $mode);
$dir
Upload all files from this directory string
$place
Upload to string
$mode
FTP mode to use INT
Return storage zone files and folder data (Original)
$bunny->listAllOG();
returns array
Return storage zone directory files formatted
$bunny->listFiles($location);
$location
Directory to get and return data string
returns array
Return storage zone directory folders formatted
$bunny->listFolders($location);
$location
Directory to get and return data string
returns array
Return storage zone directory file and folders formatted
$bunny->listAll($location);
$location
Directory to get and return data string
returns array
List all pull zones and data
$bunny->listPullZones();
returns array
List pull zones data for id
$bunny->pullZoneData($id);
$id
Pull zone to get data from int
returns array
Purge pull zone data
$bunny->purgePullZone($id);
$id
Pull zone to purge int
Delete pull zone data
$bunny->deletePullZone($id);
$id
Pull zone to delete int
Lists pullzone hostnames and amount
$bunny->pullZoneHostnames($pullzone_id);
Add hostname to pull zone
$bunny->addHostnamePullZone($id, $hostname);
$id
Pull zone hostname will be added to int
$hostname
Hostname to add string
Remove a hostname from pull zone
$bunny->removeHostnamePullZone($id, $hostname);
$id
Pull zone hostname be removed from int
$hostname
Hostname to remove string
Change force SSL status for pull zone
$bunny->forceSSLPullZone($id, $hostname, $force_ssl);
$id
Pull zone hostname change status int
$hostname
Affected hostname string
$force_ssl
True = on, FALSE = off bool
Add ip to block for pullzone
$bunny->addBlockedIpPullZone($pullzone_id, $ip, $db_log = false);
Un block an ip for pullzone
$bunny->unBlockedIpPullZone($pullzone_id, $ip, $db_log = false);
List all blocked ip's for pullzone
$bunny->listBlockedIpPullZone($pullzone_id);
Purge cache for a URL
$bunny->purgeCache($url, $async = false);
$url
Purge cache for this url string
$async
Dont wait for the purge before returning result bool
Pull zone logs as formatted array
$bunny->pullZoneLogs($id, $date);
$id
Pull zone id int
$date
Date for logs, only past 3 days (mm-dd-yy) string
Get usage statistics
$bunny->getStatistics();
returns array
Get billing data
$bunny->getBilling();
returns array
Get account balance
$bunny->balance();
returns float
Get monthly charge
$bunny->monthCharges();
returns float
Get monthly charge breakdown for region
$bunny->monthChargeBreakdown();
returns array
Lists total billing amount and first date time
$bunny->totalBillingAmount();
returns array
Apply a coupon code
$bunny->applyCoupon($code);
Set Json header
$bunny->jsonHeader();
Convert/format bytes to other data types
$bunny->convertBytes($bytes, $convert_to = 'GB', $format = true, $decimals = 2);
Convert bool to int value
$bunny->boolToInt($bool);
returns int
Close connection (Optional)
$bunny->closeConnection();
Calling and setting stream library access key
require __DIR__ . '/vendor/autoload.php';
use Corbpie\BunnyCdn\BunnyAPIStream;
$bunny = new BunnyAPIStream();
$bunny->streamLibraryAccessKey('XXXX-XXXXX-XXXX-XXXX');
//Or set stream library access key at line 14 in BunnyAPI.php
You can only get the video library id from your bunny.net stream library page Set video stream library id
$bunny->setStreamLibraryId($library_id);
$library_id
stream library id int
Get video collections
Requires setStreamLibraryId()
to be set.
$bunny->getVideoCollections();
Set video collection guid
$bunny->setStreamCollectionGuid($collection_guid);
$collection_guid
video collection guid string
Set video guid
$bunny->setStreamVideoGuid($video_guid);
$video_guid
video guid string
Get video collections for library id
Requires setStreamLibraryId()
to be set.
$bunny->getStreamCollections($page, $items_pp,$order_by);
$page
page number int
$items_pp
items to show int
$order_by
order by string
Get streams for a collection
Requires setStreamLibraryId()
and setStreamCollectionGuid()
to be set.
$bunny->getStreamForCollection();
Update stream collection
Requires setStreamLibraryId()
and setStreamCollectionGuid()
to be set.
$bunny->updateCollection($updated_collection_name);
$updated_collection_name
the name to update video collection to string
Delete stream collection
Requires setStreamLibraryId()
and setStreamCollectionGuid()
to be set.
$bunny->deleteCollection();
Create stream collection
Requires setStreamLibraryId()
to be set.
$bunny->createCollection($new_collection_name);
$new_collection_name
the name for your new video collection string
List videos for library
Requires setStreamLibraryId()
to be set.
$bunny->listVideos($collection_guid);
$collection_guid
video collection guid string
Get video information
Requires setStreamLibraryId()
to be set.
$bunny->getVideo($collection_guid);
$collection_guid
video collection guid string
Delete video
Requires setStreamLibraryId()
to be set.
$bunny->deleteVideo($collection_guid);
$library_id
library id int
$collection_guid
video collection guid string
Create video
Requires setStreamLibraryId()
to be set.
$bunny->createVideo($video_title);
$video_title
video title string
Create video for collection
Requires setStreamLibraryId()
and setStreamCollectionGuid()
to be set.
$bunny->createVideoForCollection($video_title);
$video_title
video title string
Upload video
Requires setStreamLibraryId()
to be set.
Need to use createVideo()
first to get video guid
$bunny->uploadVideo($video_guid, $video_to_upload);
$video_guid
video guid string
$video_to_upload
video filename string
Set thumbnail for video
Requires setStreamLibraryId()
to be set.
$bunny->setThumbnail($video_guid, $thumbnail_url);
$video_guid
video guid string
$thumbnail_url
image url string
Get video resolutions
Requires setStreamLibraryId()
to be set.
$bunny->videoResolutionsArray($video_guid);
Get video size
Requires setStreamLibraryId()
to be set.
$bunny->videoSize($video_guid);
Add captions
Requires setStreamLibraryId()
to be set.
$bunny->addCaptions($video_guid, $collection_guid, $label, $captions_file);
$video_guid
video guid string
$srclang
caption srclang string
$label
label for captions string
$captions_file
caption file URL string
Delete captions
Requires setStreamLibraryId()
to be set.
$bunny->deleteCaptions($library_id, $video_guid, $srclang);
$video_guid
video guid string
$srclang
captions srclang string
require __DIR__ . '/vendor/autoload.php';
use Corbpie\BunnyCdn\BunnyAPIDNS;
$bunny = new BunnyAPIDNS();
Get DNS all zones
$bunny->getDNSZones();
$library_id
stream library id int
Get DNS zone
$bunny->getDNSZone($zone_id);
$zone_id
DNS zone id int
Add a DNS zone
$bunny->addDNSZone($domain, $logging);
$domain
domain name string
$logging
use logging bool
Add a DNS zone full
$parameters = array(
'Domain' => 'zonedomain.com', 'NameserversDetected' => true, 'CustomNameserversEnabled' => true,
'Nameserver1' => 'customns1.com', 'Nameserver2' => 'customns2.com', 'SoaEmail' => 'contact@zonedomain.com',
'DateModified' => '2022-08-18 23:59:59', 'DateCreated' => '2022-08-18 23:59:59', 'NameserversNextCheck' => '2022-08-28 23:59:59',
'LoggingEnabled' => true, 'LoggingIPAnonymizationEnabled' => true
);
$bunny->addDNSZoneFull($parameters);
$parameters
parameters to create array
Delete DNS zone
$bunny->deleteDNSZone($zone_id);
$zone_id
DNS zone id int
DNS zone statistics
$bunny->getDNSZoneStatistics($zone_id);
$zone_id
DNS zone id int
Update DNS nameservers
$bunny->updateDNSZoneNameservers($zone_id, $custom_ns, $ns_one, $ns_two);
$zone_id
DNS zone id int
$custom_ns
use custom nameservers bool
$ns_one
NS one string
$ns_two
NS two string
Update DNS SOA email
$bunny->updateDNSZoneNameservers($zone_id, $soa_email);
$zone_id
DNS zone id int
$soa_email
NS one string
Add a DNS record by using parameters https://docs.bunny.net/reference/dnszonepublic_addrecord
$parameters = array('Type' => 0, 'Ttl' => 120, 'Accelerated' => true, 'Weight' => 200);
$bunny->addDNSRecord($zone_id, $name, $value, $parameters);
$zone_id
DNS zone id int
$name
name string
$value
IP address string
$parameters
array
Add DNS A record
$bunny->addDNSRecordA($zone_id, $hostname, $ipv4);
$zone_id
DNS zone id int
$hostname
hostname string
$ipv4
IPv4 address string
Add DNS AAAA record
$bunny->addDNSRecordAAAA($zone_id, $hostname, $ipv6);
$zone_id
DNS zone id int
$hostname
hostname string
$ipv6
IPv6 address string
Add DNS CNAME record
$bunny->addDNSRecordCNAME($zone_id, $hostname, $target);
$zone_id
DNS zone id int
$hostname
hostname string
$target
string
Add DNS MX record
$bunny->addDNSRecordMX($zone_id, $hostname, $mail, $priority);
$zone_id
DNS zone id int
$hostname
hostname string
$mail
mail server string
$priority
int
Add DNS TXT record
$bunny->addDNSRecordTXT($zone_id, $hostname, $content);
$zone_id
DNS zone id int
$hostname
hostname string
$content
txt contents string
Add DNS NS record
$bunny->addDNSRecordNS($zone_id, $hostname, $target);
$zone_id
DNS zone id int
$hostname
hostname string
$target
string
Add DNS redirect
$bunny->addDNSRecordRedirect($zone_id, $hostname, $url);
$zone_id
DNS zone id int
$hostname
hostname string
$url
redirect to string
Update DNS A record
$bunny->updateDNSRecordA($zone_id, $dns_id, $hostname, $ipv4);
$zone_id
DNS zone id int
$dns_id
DNS record id int
$hostname
hostname string
$ipv4
ipv4 address string
Update DNS AAAA record
$bunny->updateDNSRecordAAAA($zone_id, $dns_id, $hostname, $ipv6);
$zone_id
DNS zone id int
$dns_id
DNS record id int
$hostname
hostname string
$ipv6
ipv6 address string
Disable DNS record
$bunny->disableDNSRecord($zone_id, $dns_id);
$zone_id
DNS zone id int
$dns_id
DNS record id int
Enable DNS record
$bunny->enableDNSRecord($zone_id, $dns_id);
$zone_id
DNS zone id int
$dns_id
DNS record id int
Delete DNS record
$bunny->deleteDNSRecord($zone_id, $dns_id);
$zone_id
DNS zone id int
$dns_id
DNS record id int