corbpie/bunny-cdn-api

Bunny net CDN API 类,用于处理拉取区域、存储区域、视频流和 DNS。

v1.9.7 2024-05-14 13:02 UTC

This package is auto-updated.

Last update: 2024-09-17 14:07:49 UTC


README

这是最全面、功能丰富且易于使用的 PHP 类,用于 bunny.net (BunnyCDN) 的拉取、视频流、DNS 和存储区域 API

此类虽然主要关注存储区域交互,但还包括拉取区域功能、DNS、视频流等。将 API 与 FTP 管理相结合,使用 BunnyNet 存储区域变得更加容易。

Generic badge Generic badge

目录

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