corbpie / bunny-cdn-api
Bunny net CDN API 类,用于处理拉取区域、存储区域、视频流和 DNS。
Requires
- php: ^8.2
- ext-curl: *
- ext-ftp: *
README
这是最全面、功能丰富且易于使用的 PHP 类,用于 bunny.net (BunnyCDN) 的拉取、视频流、DNS 和存储区域 API。
此类虽然主要关注存储区域交互,但还包括拉取区域功能、DNS、视频流等。将 API 与 FTP 管理相结合,使用 BunnyNet 存储区域变得更加容易。
目录
1.9.7 变更
2024 年 5 月 14 日
- 修复 dirSize() 需要斜杠的问题
- 修复 createFolder() 抛出警告消息的问题
- 添加 fileExists()
要求
- PHP 8.2
对于拉取区域、计费和统计API交互,您需要BunnyNet API密钥,您可以在仪表板中的“我的账户”部分找到它。
您需要的视频流API需要视频流库访问密钥,可以在bunny.net库的设置中找到。
如果您想与存储区域交互,则需要设置BunnyCDN API密钥以及存储区域名称。
您可以通过listStorageZones()
获取这些信息,因为它会返回账户的所有存储区域数据/信息。
功能与能力
- 列出存储区域
- 添加/创建存储区域
- 删除存储区域
- 在存储区域中创建文件夹
- 在存储区域中删除文件夹
- 在存储区域中删除文件
- 在存储区域中删除文件夹中的所有文件
- 从存储区域下载文件
- 带有进度百分比的从存储区域下载文件
- 从存储区域下载文件夹中的所有文件
- 将文件上传到存储区域
- 带有进度百分比的将文件上传到存储区域
- 将文件夹中的所有文件上传到存储区域
- 在存储区域中重命名文件或文件夹
- 在存储区域中移动文件
- 获取存储区域中的文件大小
- 获取存储区域中的目录大小
- 在存储区域中导航/列出目录
- 列出存储区域目录中的所有文件
- 列出存储区域目录中所有格式化的文件
- 列出存储区域目录中所有格式化的文件夹
- 列出存储区域目录中所有格式化的内容
- 创建、编辑和删除视频
- 创建、编辑和删除DNS区域
- 获取使用统计信息
- 获取计费数据
- 查看余额
- 查看月度费用
- 查看月度费用明细
- 应用优惠券代码
- 列出拉取区域
- 获取拉取区域
- 添加拉取区域
- 更新拉取区域
- 删除拉取区域
- 清空拉取区域
- 将主机名添加到拉取区域
- 从拉取区域中移除主机名
- 为拉取区域设置强制SSL
- 列出拉取区域HTTP访问日志
- 计算成本
使用
使用composer安装
composer require corbpie/bunny-cdn-api
使用方法
require __DIR__ . '/vendor/autoload.php'; use Corbpie\BunnyCdn\BunnyAPIPull; $bunny = new BunnyAPIPull();//Initiate the class echo $bunny->listPullZones();
设置 API 密钥
选项1(推荐)
第12行 bunnyAPI.php
const API_KEY = 'XXXX-XXXX-XXXX';
选项2
使用apiKey()
(每次调用类时都需要设置)
$bunny->apiKey('XXXX-XXXX-XXXX');//Bunny api key
存储区域交互
require __DIR__ . '/vendor/autoload.php'; use Corbpie\BunnyCdn\BunnyAPIStorage; $bunny = new BunnyAPIStorage();
存储区域名称和访问密钥(仅在使用拉取区域功能时不需要)
将$access_key = ''
设置为自动获取密钥(存储名称必须准确)
$bunny->zoneConnect($storagename, $access_key);
$storagename
存储区域名称 字符串
$access_key
存储区域的密钥/密码 字符串
可选
列出存储区域
$bunny->listStorageZones();
返回 数组
添加存储区域
$bunny->addStorageZone($newstoragezone);
$newstoragezone
要创建的存储区域名称 字符串
删除存储区域
$bunny->deleteStorageZone($id);
$id
要删除的存储区域ID 整数
获取目录大小
$dir = "media/images/dogs"; $bunny->dirSize($dir);
$dir
要获取大小的目录 字符串
返回当前目录
$bunny->currentDir();
返回 字符串
更改目录
$dir = "media/images/dogs"; $bunny->changeDir($dir);
$dir
目录导航(FTP规则) 字符串
检查文件夹是否存在
$bunny->folderExists($path);
$path
文件夹路径 字符串
返回 布尔值
检查文件是否存在
$file = "media/images/dogs/collie.jpg"; $bunny->fileExists($file);
$file
包含文件名的完整文件路径 字符串
返回 布尔值
移动到父目录
$bunny->moveUpOne();
在当前目录中创建文件夹
$new_folder = "dogs" $bunny->createFolder($new_folder);
$new_folder
在当前目录中创建文件夹 字符串
删除文件夹
$bunny->deleteFolder($folder_name);
$folder_name
要删除的文件夹名称(文件夹必须为空) 字符串
删除文件
$bunny->deleteFile($name);
$name
要删除的文件名称 字符串
删除文件夹中的所有文件
$bunny->deleteAllFiles($dir);
$dir
要删除所有文件的目录 字符串
重命名文件
BunnyCDN 不允许使用 ftp_rename,因此文件将被复制为新名称,然后删除旧文件。
$directory = "media/images/dogs"; $old_file_name = "collie.jpg"; $new_file_name = "poodle.jpg"; $bunny->renameFile($directory, $old_file_name, $new_file_name);
$directory
包含文件的目录 字符串
$old_name
正在被重命名的对象 字符串
$new_name
对象的新名称 字符串
移动文件
$bunny->moveFile($file, $move_to);
$file
要移动的文件 字符串
$move_to
移动文件到的目录 字符串
下载文件
$bunny->downloadFile($save_as, $get_file, $mode);
$save_as
保存文件为 字符串
$get_file
要下载的文件 字符串
$mode
要使用的 FTP 模式 整型
下载目录中的所有文件
$bunny->downloadAll($dir_dl_from, $dl_into, $mode);
$dir_dl_from
从该目录下载所有文件 字符串
$dl_into
下载到 字符串
$mode
要使用的 FTP 模式 整型
上传文件
$bunny->uploadFile($upload, $upload_as, $mode);
$upload
要上传的文件 字符串
$upload_as
上传为 字符串
$mode
要使用的 FTP 模式 整型
从本地文件夹上传所有文件
$bunny->uploadAllFiles($dir, $place, $mode);
$dir
从此目录上传所有文件 字符串
$place
上传到 字符串
$mode
要使用的 FTP 模式 整型
返回存储区域文件和文件夹数据(原始)
$bunny->listAllOG();
返回 数组
返回存储区域目录文件格式化
$bunny->listFiles($location);
$location
获取和返回数据的目录 字符串
返回 数组
返回存储区域目录文件夹格式化
$bunny->listFolders($location);
$location
获取和返回数据的目录 字符串
返回 数组
返回存储区域目录文件和文件夹格式化
$bunny->listAll($location);
$location
获取和返回数据的目录 字符串
返回 数组
列出所有拉取区域和数据
$bunny->listPullZones();
返回 数组
列出拉取区域数据(ID)
$bunny->pullZoneData($id);
$id
从拉取区域获取数据的区域 整型
返回 数组
清除拉取区域数据
$bunny->purgePullZone($id);
$id
要清除的拉取区域 整型
删除拉取区域数据
$bunny->deletePullZone($id);
$id
要删除的拉取区域 整型
列出拉取区域的主机名和数量
$bunny->pullZoneHostnames($pullzone_id);
将主机名添加到拉取区域
$bunny->addHostnamePullZone($id, $hostname);
$id
要添加主机名的拉取区域 整型
$hostname
要添加的主机名 字符串
从拉取区域中移除主机名
$bunny->removeHostnamePullZone($id, $hostname);
$id
要移除主机名的拉取区域 整型
$hostname
要移除的主机名 字符串
更改拉取区域的强制 SSL 状态
$bunny->forceSSLPullZone($id, $hostname, $force_ssl);
$id
改变状态的拉取区域主机名 整型
$hostname
受影响的主机名 字符串
$force_ssl
True = 开启,FALSE = 关闭 布尔型
为拉取区域添加要阻止的 IP
$bunny->addBlockedIpPullZone($pullzone_id, $ip, $db_log = false);
为拉取区域解锁 IP
$bunny->unBlockedIpPullZone($pullzone_id, $ip, $db_log = false);
列出拉取区域的所有阻止 IP
$bunny->listBlockedIpPullZone($pullzone_id);
清除 URL 的缓存
$bunny->purgeCache($url, $async = false);
$url
清除此 URL 的缓存 字符串
$async
在返回结果之前不等待清除 布尔型
以格式化数组形式获取拉取区域日志
$bunny->pullZoneLogs($id, $date);
$id
拉取区域 ID 整型
$date
日志日期,仅过去 3 天(mm-dd-yy)字符串
获取使用统计信息
$bunny->getStatistics();
返回 数组
获取计费数据
$bunny->getBilling();
返回 数组
获取账户余额
$bunny->balance();
返回 浮点型
获取月度费用
$bunny->monthCharges();
返回 浮点型
获取地区的月度费用明细
$bunny->monthChargeBreakdown();
返回 数组
列出总费用金额和第一个日期时间
$bunny->totalBillingAmount();
返回 数组
应用优惠券代码
$bunny->applyCoupon($code);
设置 JSON 标头
$bunny->jsonHeader();
将字节转换为其他数据类型
$bunny->convertBytes($bytes, $convert_to = 'GB', $format = true, $decimals = 2);
将布尔型转换为整型值
$bunny->boolToInt($bool);
返回 整型
关闭连接(可选)
$bunny->closeConnection();
视频流区域交互
调用和设置流库访问密钥
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
您只能从 bunny.net 流库页面获取视频库 ID 设置视频流库 ID
$bunny->setStreamLibraryId($library_id);
$library_id
流库 ID 整型
获取视频集合
需要设置 setStreamLibraryId()
。
$bunny->getVideoCollections();
设置视频收藏夹 GUID
$bunny->setStreamCollectionGuid($collection_guid);
$collection_guid
视频收藏夹 GUID 字符串
设置视频 GUID
$bunny->setStreamVideoGuid($video_guid);
$video_guid
视频 GUID 字符串
根据图书馆ID获取视频集合
需要设置 setStreamLibraryId()
。
$bunny->getStreamCollections($page, $items_pp,$order_by);
$page
页码 int
$items_pp
显示的项目数量 int
$order_by
排序依据 string
获取集合的流
需要设置 setStreamLibraryId()
和 setStreamCollectionGuid()
。
$bunny->getStreamForCollection();
更新流集合
需要设置 setStreamLibraryId()
和 setStreamCollectionGuid()
。
$bunny->updateCollection($updated_collection_name);
$updated_collection_name
更新视频集合的名称 string
删除流集合
需要设置 setStreamLibraryId()
和 setStreamCollectionGuid()
。
$bunny->deleteCollection();
创建流集合
需要设置 setStreamLibraryId()
。
$bunny->createCollection($new_collection_name);
$new_collection_name
新视频集合的名称 string
列出图书馆的视频
需要设置 setStreamLibraryId()
。
$bunny->listVideos($collection_guid);
$collection_guid
视频收藏夹 GUID 字符串
获取视频信息
需要设置 setStreamLibraryId()
。
$bunny->getVideo($collection_guid);
$collection_guid
视频收藏夹 GUID 字符串
删除视频
需要设置 setStreamLibraryId()
。
$bunny->deleteVideo($collection_guid);
$library_id
图书馆ID int
$collection_guid
视频收藏夹 GUID 字符串
创建视频
需要设置 setStreamLibraryId()
。
$bunny->createVideo($video_title);
$video_title
视频标题 string
为集合创建视频
需要设置 setStreamLibraryId()
和 setStreamCollectionGuid()
。
$bunny->createVideoForCollection($video_title);
$video_title
视频标题 string
上传视频
需要设置 setStreamLibraryId()
。
需要先使用 createVideo()
获取视频GUID
$bunny->uploadVideo($video_guid, $video_to_upload);
$video_guid
视频 GUID 字符串
$video_to_upload
要上传的视频文件名 string
设置视频缩略图
需要设置 setStreamLibraryId()
。
$bunny->setThumbnail($video_guid, $thumbnail_url);
$video_guid
视频 GUID 字符串
$thumbnail_url
图片URL string
获取视频分辨率
需要设置 setStreamLibraryId()
。
$bunny->videoResolutionsArray($video_guid);
获取视频大小
需要设置 setStreamLibraryId()
。
$bunny->videoSize($video_guid);
添加字幕
需要设置 setStreamLibraryId()
。
$bunny->addCaptions($video_guid, $collection_guid, $label, $captions_file);
$video_guid
视频 GUID 字符串
$srclang
字幕srclang string
$label
字幕标签 string
$captions_file
字幕文件URL string
删除字幕
需要设置 setStreamLibraryId()
。
$bunny->deleteCaptions($library_id, $video_guid, $srclang);
$video_guid
视频 GUID 字符串
$srclang
字幕srclang string
DNS区域交互
require __DIR__ . '/vendor/autoload.php'; use Corbpie\BunnyCdn\BunnyAPIDNS; $bunny = new BunnyAPIDNS();
获取所有DNS区域
$bunny->getDNSZones();
$library_id
流库 ID 整型
获取DNS区域
$bunny->getDNSZone($zone_id);
$zone_id
DNS区域ID int
添加DNS区域
$bunny->addDNSZone($domain, $logging);
$domain
域名 string
$logging
使用日志 bool
添加完整的DNS区域
$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
创建参数 array
删除DNS区域
$bunny->deleteDNSZone($zone_id);
$zone_id
DNS区域ID int
DNS区域统计
$bunny->getDNSZoneStatistics($zone_id);
$zone_id
DNS区域ID int
更新DNS名称服务器
$bunny->updateDNSZoneNameservers($zone_id, $custom_ns, $ns_one, $ns_two);
$zone_id
DNS区域ID int
$custom_ns
使用自定义名称服务器 bool
$ns_one
NS一 string
$ns_two
NS二 string
更新DNS SOA电子邮件
$bunny->updateDNSZoneNameservers($zone_id, $soa_email);
$zone_id
DNS区域ID int
$soa_email
NS一 string
通过参数添加DNS记录 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区域ID int
$name
名称 string
$value
IP地址 string
$parameters
array
添加DNS A记录
$bunny->addDNSRecordA($zone_id, $hostname, $ipv4);
$zone_id
DNS区域ID int
$hostname
主机名 string
$ipv4
IPv4地址 string
添加DNS AAAA记录
$bunny->addDNSRecordAAAA($zone_id, $hostname, $ipv6);
$zone_id
DNS区域ID int
$hostname
主机名 string
$ipv6
IPv6地址 string
添加DNS CNAME记录
$bunny->addDNSRecordCNAME($zone_id, $hostname, $target);
$zone_id
DNS区域ID int
$hostname
主机名 string
$target
string
添加DNS MX记录
$bunny->addDNSRecordMX($zone_id, $hostname, $mail, $priority);
$zone_id
DNS区域ID int
$hostname
主机名 string
$mail
邮件服务器 string
$priority
int
添加DNS TXT记录
$bunny->addDNSRecordTXT($zone_id, $hostname, $content);
$zone_id
DNS区域ID int
$hostname
主机名 string
$content
TXT内容 string
添加DNS NS记录
$bunny->addDNSRecordNS($zone_id, $hostname, $target);
$zone_id
DNS区域ID int
$hostname
主机名 string
$target
string
添加DNS重定向
$bunny->addDNSRecordRedirect($zone_id, $hostname, $url);
$zone_id
DNS区域ID int
$hostname
主机名 string
$url
重定向到 string
更新DNS A记录
$bunny->updateDNSRecordA($zone_id, $dns_id, $hostname, $ipv4);
$zone_id
DNS区域ID int
$dns_id
DNS记录ID int
$hostname
主机名 string
$ipv4
IPv4地址 string
更新DNS AAAA记录
$bunny->updateDNSRecordAAAA($zone_id, $dns_id, $hostname, $ipv6);
$zone_id
DNS区域ID int
$dns_id
DNS记录ID int
$hostname
主机名 string
$ipv6
IPv6地址 string
禁用DNS记录
$bunny->disableDNSRecord($zone_id, $dns_id);
$zone_id
DNS区域ID int
$dns_id
DNS记录ID int
启用DNS记录
$bunny->enableDNSRecord($zone_id, $dns_id);
$zone_id
DNS区域ID int
$dns_id
DNS记录ID int
删除DNS记录
$bunny->deleteDNSRecord($zone_id, $dns_id);
$zone_id
DNS区域ID int
$dns_id
DNS记录ID int