[增添]添加了etcd服务与对应页面
This commit is contained in:
54
management-panel/app/Services/EtcdService.php
Normal file
54
management-panel/app/Services/EtcdService.php
Normal file
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
namespace App\Services;
|
||||
|
||||
use GuzzleHttp\Client;
|
||||
|
||||
class EtcdService
|
||||
{
|
||||
protected $client;
|
||||
protected $baseUri = 'http://127.0.0.1:2379/v3/'; // etcd 默认地址
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->client = new Client(['base_uri' => $this->baseUri]);
|
||||
}
|
||||
|
||||
public function put($key, $value)
|
||||
{
|
||||
$this->client->post('kv/put', [
|
||||
'json' => [
|
||||
'key' => base64_encode($key),
|
||||
'value' => base64_encode($value),
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
public function get($key)
|
||||
{
|
||||
$response = $this->client->post('kv/range', [
|
||||
'json' => [
|
||||
'key' => base64_encode($key),
|
||||
],
|
||||
]);
|
||||
return json_decode($response->getBody()->getContents(), true);
|
||||
}
|
||||
|
||||
public function deleteByPrefix($prefix)
|
||||
{
|
||||
// Encode the prefix
|
||||
$encodedPrefix = base64_encode($prefix);
|
||||
|
||||
// Calculate the range end by incrementing the last character
|
||||
$lastChar = $prefix[strlen($prefix) - 1];
|
||||
$rangeEnd = $prefix . chr(ord($lastChar) + 1);
|
||||
$encodedRangeEnd = base64_encode($rangeEnd);
|
||||
|
||||
// Send the delete request
|
||||
$this->client->post('kv/deletion_range', [
|
||||
'json' => [
|
||||
'key' => $encodedPrefix,
|
||||
'range_end' => $encodedRangeEnd,
|
||||
],
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user