ftw-soft / rundeck-api-client
此软件包已被废弃且不再维护。未建议替代软件包。
Rundeck 的 API 客户端
v2.0.1
2021-02-14 19:33 UTC
Requires
- php: ^7.2 || ^8.0
- ext-json: *
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- psr/http-message: ^1.0
Requires (Dev)
- guzzlehttp/guzzle: ^7.0
- http-interop/http-factory-guzzle: ^1.0
- phpstan/phpstan: ^0.12.64
- phpunit/phpunit: ^8.5 || ^9.4
Suggests
- guzzlehttp/guzzle: A PSR-18 compatible HTTP Client (^7.0)
- http-interop/http-factory-guzzle: PSR-17 compatible HTTP Factories (^1.0)
README
一个基于官方文档 (非默认代表所有API功能) 访问 Rundeck API 的 PHP 客户端。不是所有API功能都有默认表示。
需求
- PHP 7.2+ 且已启用 json 扩展
- Rundeck 2.1+
此客户端基于 PSR-17 和 PSR-18,因此您需要一个兼容的HTTP客户端和请求工厂。
我们建议使用 Guzzle 7+ 和 http-interop/http-factory-guzzle
composer require guzzlehttp/guzzle:^7.0 http-interop/http-factory-guzzle:^1.0
安装
composer require ftw-soft/rundeck-api-client
基本客户端使用
<?php require_once __DIR__ . '/vendor/autoload.php'; use FtwSoft\Rundeck\Authentication\PasswordAuthentication; use FtwSoft\Rundeck\Authentication\TokenAuthentication; use FtwSoft\Rundeck\Client; use GuzzleHttp\Client as HttpClient; use Http\Factory\Guzzle\RequestFactory; use Http\Factory\Guzzle\StreamFactory; $httpClient = new HttpClient(); // --- Setup authentication --- # Password authentication $authentication = new PasswordAuthentication( 'https://rundeck.local', 'username', 'password', $httpClient, new RequestFactory(), new StreamFactory() ); # OR Token based authentication $authentication = new TokenAuthentication('secret-token'); // --- Initialize client --- $client = new Client( 'https://rundeck.local', $authentication, $httpClient, new RequestFactory(), new StreamFactory(), 36 // optional API version ); // Make a request $response = $client->request('GET', 'projects'); var_dump($response->getBody()->getContents());
支持的场景
此软件包包括常见的请求场景,这些场景被称为“资源”。以下资源目前支持
- 执行
- 作业
- 项目
- 项目列表
- 系统
- 令牌
- 令牌列表
- 用户
每个资源都包括对API的调用,其负载和/或响应由自定义实体类表示。
例如
<?php require_once __DIR__ . '/vendor/autoload.php'; use FtwSoft\Rundeck\Resource\Tokens as TokensResource; use FtwSoft\Rundeck\Client; use FtwSoft\Rundeck\Entity\TokenEntity; /** @var Client $client */ $tokensResource = new TokensResource($client); /** @var TokenEntity[] $tokens */ $tokens = $tokensResource->get(); foreach ($tokens as $token) { echo '===================================='; echo 'id: ', $token->getId(), PHP_EOL; echo 'user:', $token->getUser(), PHP_EOL; echo 'token: ', $token->getToken(), PHP_EOL; echo 'creator: ', $token->getCreator(), PHP_EOL; echo 'expire at: ', $token->getExpiration()->format(\DATE_ATOM), PHP_EOL; echo 'roles: ', implode(', ', $token->getRoles()), PHP_EOL; echo 'is expired: ', $token->isExpired() ? 'yes' : 'no', PHP_EOL; }
请随意通过创建新的 pull request 将您自己的资源和实体添加到此软件包中。