sinr rr / php-diia-sdk
PHP Diia SDK
Requires
- php: ^7.4|^8.0
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- mockery/mockery: ^1.4
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2023-07-11 19:27:44 UTC
README
介绍
Diia SDK 为与 id.gov.ua API 交互和管理分支及产品提供了简洁的接口。
文档
安装
要在项目中安装 SDK,您需要通过 composer 引入该包
composer require sinnrrr/php-diia-sdk
基本用法
您可以创建 SDK 的一个实例,如下所示
$diia = new Sinnrrr\Diia\Diia(TOKEN_HERE);
使用 Diia 实例,您可以执行多个操作以及检索 Diia API 提供的不同资源
$branches = $diia->branches();
这将为您提供一个访问到的分支数组,其中每个分支都由 Sinnrrr\Diia\Resources\Branch 的一个实例表示,该实例具有多个公共属性,如 $name、$email、$region、$scopes 等。
您还可以使用以下方式检索单个分支
$branch = $diia->branch(BRANCH_ID_HERE);
对于此 SDK 支持的多个操作,您可能需要传递一些参数,例如在创建新服务器时
$server = $diia->createServer([ "provider"=> ServerProviders::DIGITAL_OCEAN, "credential_id"=> 1, "name"=> "test-via-api", "type"=> ServerTypes::APP, "size"=> "01", "database"=> "test123", "database_type" => InstallableServices::POSTGRES, "php_version"=> InstallableServices::PHP_71, "region"=> "ams2" ]);
这些参数将用于发送到 Forge 服务器的 POST 请求中,您可以在 Forge 的官方 API 文档 中找到有关每个操作所需参数的更多信息。
请注意,例如此请求将仅启动服务器创建过程,您的服务器可能需要几分钟才能完成配置,您需要检查服务器的 $isReady 属性以确定其是否已准备好。
但是,某些 SDK 方法会在 Forge 端等待操作完成,我们通过定期联系 Forge 服务器并检查我们的操作是否完成来实现这一点,例如
$diia->createSite(SERVER_ID, [SITE_PARAMETERS]);
此方法将每 5 秒 ping 一次 Forge 服务器,并检查新创建的站点的状态是否为 installed,仅在状态如此时才返回,如果等待超过 30 秒,将抛出 Laravel\Forge\Exceptions\TimeoutException。
您可以通过将 $wait 参数设置为 false 来轻松停止这种行为
$diia->createSite(SERVER_ID, [SITE_PARAMETERS], false);
您还可以设置所需的超时值
$diia->setTimeout(120)->createSite(SERVER_ID, [SITE_PARAMETERS]);
认证用户
$diia->user();
管理服务器
$diia->servers(); $diia->server($serverId); $diia->createServer(array $data); $diia->updateServer($serverId, array $data); $diia->deleteServer($serverId); $diia->rebootServer($serverId); // Server access $diia->revokeAccessToServer($serverId); $diia->reconnectToServer($serverId); $diia->reactivateToServer($serverId);
在 Server 实例上,您还可以调用
$server->update(array $data); $server->delete(); $server->reboot(); $server->revokeAccess(); $server->reconnect(); $server->reactivate(); $server->rebootMysql(); $server->stopMysql(); $server->rebootPostgres(); $server->stopPostgres(); $server->rebootNginx(); $server->stopNginx(); $server->installBlackfire(array $data); $server->removeBlackfire(); $server->installPapertrail(array $data); $server->removePapertrail(); $server->enableOPCache(); $server->disableOPCache(); $server->phpVersions(); $server->installPHP($version); $server->updatePHP($version);
服务器 SSH 密钥
$diia->keys($serverId); $diia->sshKey($serverId, $keyId); $diia->createSSHKey($serverId, array $data, $wait = true); $diia->deleteSSHKey($serverId, $keyId);
在 SSHKey 实例上,您还可以调用
$sshKey->delete();
服务器计划任务
$diia->jobs($serverId); $diia->job($serverId, $jobId); $diia->createJob($serverId, array $data, $wait = true); $diia->deleteJob($serverId, $jobId);
在 Job 实例上,您还可以调用
$job->delete();
服务器事件
$diia->events(); $diia->events($serverId);
服务管理
// MySQL $diia->rebootMysql($serverId); $diia->stopMysql($serverId); // Postgres $diia->rebootPostgres($serverId); $diia->stopPostgres($serverId); // Nginx $diia->rebootNginx($serverId); $diia->stopNginx($serverId); $diia->siteNginxFile($serverId, $siteId); $diia->updateSiteNginxFile($serverId, $siteId, $content); // Blackfire $diia->installBlackfire($serverId, array $data); $diia->removeBlackfire($serverId); // Papertrail $diia->installPapertrail($serverId, array $data); $diia->removePapertrail($serverId); // OPCache $diia->enableOPCache($serverId); $diia->disableOPCache($serverId);
服务器守护进程
$diia->daemons($serverId); $diia->daemon($serverId, $daemonId); $diia->createDaemon($serverId, array $data, $wait = true); $diia->restartDaemon($serverId, $daemonId, $wait = true); $diia->deleteDaemon($serverId, $daemonId);
在 Daemon 实例上,您还可以调用
$daemon->restart($wait = true); $daemon->delete();
服务器防火墙规则
$diia->firewallRules($serverId); $diia->firewallRule($serverId, $ruleId); $diia->createFirewallRule($serverId, array $data, $wait = true); $diia->deleteFirewallRule($serverId, $ruleId);
在 FirewallRule 实例上,您还可以调用
$rule->delete();
站点管理
$diia->sites($serverId); $diia->site($serverId, $siteId); $diia->createSite($serverId, array $data, $wait = true); $diia->updateSite($serverId, $siteId, array $data); $diia->refreshSiteToken($serverId, $siteId); $diia->deleteSite($serverId, $siteId); // Add Site Aliases $diia->addSiteAliases($serverId, $siteId, array $aliases); // Environment File $diia->siteEnvironmentFile($serverId, $siteId); $diia->updateSiteEnvironmentFile($serverId, $siteId, $content); // Site Repositories and Deployments $diia->installGitRepositoryOnSite($serverId, $siteId, array $data, $wait = false); $diia->updateSiteGitRepository($serverId, $siteId, array $data); $diia->destroySiteGitRepository($serverId, $siteId, $wait = false); $diia->siteDeploymentScript($serverId, $siteId); $diia->updateSiteDeploymentScript($serverId, $siteId, $content); $diia->enableQuickDeploy($serverId, $siteId); $diia->disableQuickDeploy($serverId, $siteId); $diia->deploySite($serverId, $siteId, $wait = false); $diia->resetDeploymentState($serverId, $siteId); $diia->siteDeploymentLog($serverId, $siteId); // PHP Version $diia->changeSitePHPVersion($serverId, $siteId, $version); // Installing Wordpress $diia->installWordPress($serverId, $siteId, array $data); $diia->removeWordPress($serverId, $siteId); // Installing phpMyAdmin $diia->installPhpMyAdmin($serverId, $siteId, array $data); $diia->removePhpMyAdmin($serverId, $siteId); // Updating Node balancing Configuration $diia->updateNodeBalancingConfiguration($serverId, $siteId, array $data);
在 Site 实例上,您还可以调用
$site->refreshToken(); $site->delete(); $site->installGitRepository(array $data, $wait = false); $site->updateGitRepository(array $data); $site->destroyGitRepository($wait = false); $site->getDeploymentScript(); $site->updateDeploymentScript($content); $site->enableQuickDeploy(); $site->disableQuickDeploy(); $site->deploySite($wait = false); $site->resetDeploymentState(); $site->siteDeploymentLog(); $site->installWordPress($data); $site->removeWordPress(); $site->installPhpMyAdmin($data); $site->removePhpMyAdmin(); $site->changePHPVersion($version);
站点工作者
$diia->workers($serverId, $siteId); $diia->worker($serverId, $siteId, $workerId); $diia->createWorker($serverId, $siteId, array $data, $wait = true); $diia->deleteWorker($serverId, $siteId, $workerId); $diia->restartWorker($serverId, $siteId, $workerId, $wait = true);
在 Worker 实例上,您还可以调用
$worker->delete(); $worker->restart($wait = true);
安全规则
$diia->securityRules($serverId, $siteId); $diia->securityRule($serverId, $siteId, $ruleId); $diia->createSecurityRule($serverId, $siteId, array $data); $diia->deleteSecurityRule($serverId, $siteId, $ruleId);
在 SecurityRule 实例上,您还可以调用
$securityRule->delete();
站点 Webhooks
$diia->webhooks($serverId, $siteId); $diia->webhook($serverId, $siteId, $webhookId); $diia->createWebhook($serverId, $siteId, array $data); $diia->deleteWebhook($serverId, $siteId, $webhookId);
在 Webhook 实例上,您还可以调用
$webhook->delete();
站点命令
$diia->executeSiteCommand($serverId, $siteId, array $data); $diia->listCommandHistory($serverId, $siteId); $diia->getSiteCommand($serverId, $siteId, $commandId);
站点 SSL 证书
$diia->certificates($serverId, $siteId); $diia->certificate($serverId, $siteId, $certificateId); $diia->createCertificate($serverId, $siteId, array $data, $wait = true); $diia->deleteCertificate($serverId, $siteId, $certificateId); $diia->getCertificateSigningRequest($serverId, $siteId, $certificateId); $diia->installCertificate($serverId, $siteId, $certificateId, array $data, $wait = true); $diia->activateCertificate($serverId, $siteId, $certificateId, $wait = true); $diia->obtainLetsEncryptCertificate($serverId, $siteId, $data, $wait = true);
在 Certificate 实例上,您还可以调用
$certificate->delete(); $certificate->getSigningRequest(); $certificate->install($wait = true); $certificate->activate($wait = true);
Nginx 模板
$diia->nginxTemplates($serverId); $diia->nginxDefaultTemplate($serverId); $diia->nginxTemplate($serverId, $templateId); $diia->createNginxTemplate($serverId, array $data); $diia->updateNginxTemplate($serverId, $templateId, array $data); $diia->deleteNginxTemplate($serverId, $templateId);
在 NginxTemplate 实例上,您还可以调用
$nginxTemplate->update(array $data); $nginxTemplate->delete();
数据库管理
$diia->databases($serverId); $diia->database($serverId, $databaseId); $diia->createDatabase($serverId, array $data, $wait = true); $diia->updateDatabase($serverId, $databaseId, array $data); $diia->deleteDatabase($serverId, $databaseId); // Users $diia->databaseUsers($serverId); $diia->databaseUser($serverId, $userId); $diia->createDatabaseUser($serverId, array $data, $wait = true); $diia->updateDatabaseUser($serverId, $userId, array $data); $diia->deleteDatabaseUser($serverId, $userId);
在 Database 实例上,您还可以调用
$database->update(array $data); $database->delete();
在 DatabaseUser 实例上,您还可以调用
$databaseUser->update(array $data); $databaseUser->delete();
食谱管理
$diia->recipes(); $diia->recipe($recipeId); $diia->createRecipe(array $data); $diia->updateRecipe($recipeId, array $data); $diia->deleteRecipe($recipeId); $diia->runRecipe($recipeId, array $data);
在 Recipe 实例上,您还可以调用
$recipe->update(array $data); $recipe->delete(); $recipe->run(array $data);
备份管理
$diia->backupConfigurations($serverId); $diia->createBackupConfiguration($serverId, array $data); $diia->updateBackupConfiguration($serverId, $backupConfigurationId, array $data); $diia->backupConfiguration($serverId, $backupConfigurationId); $diia->deleteBackupConfiguration($serverId, $backupConfigurationId); $diia->restoreBackup($serverId, $backupConfigurationId, $backupId); $diia->deleteBackup($serverId, $backupConfigurationId, $backupId);
在 BackupConfiguration 实例上,您还可以调用
$extendedConfig = $backupConfig->get(); // Load the databases also $backupConfig->update(array $data); $backupConfig->delete(); $backupConfig->restoreBackup($backupId); $backupConfig->deleteBackup($backupId);
在 Backup 实例上,您还可以调用
$backupConfig->delete(); $backupConfig->restore();
贡献
感谢您考虑为 Forge SDK 贡献!您可以在此处阅读贡献指南。
行为准则
为了确保 Laravel 社区对所有成员都友好,请阅读并遵守行为准则。
安全漏洞
请查看我们的安全策略,了解如何报告安全漏洞。
许可证
Laravel Forge SDK 是开源软件,根据MIT 许可证许可。