Skip to content

Commit 43f730d

Browse files
committed
Add new Request Opts Object for easily changeing the request opts. Could be used for filtering with the label selector
1 parent 5f9227e commit 43f730d

File tree

9 files changed

+160
-58
lines changed

9 files changed

+160
-58
lines changed

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
$floatingIP->update(['name' => 'my-updated-sshkey-name','labels' => ['Key' => 'value]);
1616
```
1717
+ You can now use the `labels`-Key on every `update`-Method, for easily updating the Labels
18-
18+
+ Add `LKDev\HetznerCloud\RequestOpts` - Class for easily customize the request opts. Could be used for filtering with the label selector.
19+
+ Add the parameter `$requestOpts` to all `all`-Methods
20+
1921
## 1.1.0 (14.08.2018)
2022
+ Add `update`-Method to `\LKDev\HetznerCloud\Models\Servers\Server`-Model for easily updateing the server meta data
2123
```php

src/Models/Actions/Actions.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use LKDev\HetznerCloud\HetznerAPIClient;
66
use LKDev\HetznerCloud\Models\Model;
77
use LKDev\HetznerCloud\Models\Servers\Server;
8+
use LKDev\HetznerCloud\RequestOpts;
89

910
/**
1011
*
@@ -18,12 +19,16 @@ class Actions extends Model
1819

1920

2021
/**
21-
* @return \LKDev\HetznerCloud\Models\Actions\Actions
22+
* @param RequestOpts $requestOpts
23+
* @return array
2224
* @throws \LKDev\HetznerCloud\APIException
2325
*/
24-
public function all(): array
26+
public function all(RequestOpts $requestOpts): array
2527
{
26-
$response = $this->httpClient->get('actions');
28+
if ($requestOpts == null) {
29+
$requestOpts = new RequestOpts();
30+
}
31+
$response = $this->httpClient->get('actions' . $requestOpts->buildQuery());
2732
if (!HetznerAPIClient::hasError($response)) {
2833
$resp = json_decode((string)$response->getBody(), false);
2934
return self::parse($resp)->actions;

src/Models/FloatingIps/FloatingIps.php

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use LKDev\HetznerCloud\Models\Locations\Location;
1313
use LKDev\HetznerCloud\Models\Model;
1414
use LKDev\HetznerCloud\Models\Servers\Server;
15+
use LKDev\HetznerCloud\RequestOpts;
1516

1617
class FloatingIps extends Model
1718
{
@@ -24,17 +25,21 @@ class FloatingIps extends Model
2425
* Returns all floating ip objects.
2526
*
2627
* @see https://docs.hetzner.cloud/#resources-floating-ips-get
28+
* @param RequestOpts|null $requestOpts
2729
* @return array
2830
* @throws \LKDev\HetznerCloud\APIException
2931
*/
30-
public function all(): array
32+
public function all(RequestOpts $requestOpts = null): array
3133
{
32-
$response = $this->httpClient->get('floating_ips');
33-
if (! HetznerAPIClient::hasError($response)) {
34-
return self::parse(json_decode((string) $response->getBody()))->floatingIps;
34+
if ($requestOpts == null) {
35+
$requestOpts = new RequestOpts();
36+
}
37+
$response = $this->httpClient->get('floating_ips' . $requestOpts->buildQuery());
38+
if (!HetznerAPIClient::hasError($response)) {
39+
return self::parse(json_decode((string)$response->getBody()))->floatingIps;
3540
}
3641
}
37-
42+
3843
/**
3944
* Returns a specific floating ip object.
4045
*
@@ -45,9 +50,9 @@ public function all(): array
4550
*/
4651
public function get(int $floatingIpId): FloatingIp
4752
{
48-
$response = $this->httpClient->get('floating_ips/'.$floatingIpId);
49-
if (! HetznerAPIClient::hasError($response)) {
50-
return FloatingIp::parse(json_decode((string) $response->getBody())->floating_ip);
53+
$response = $this->httpClient->get('floating_ips/' . $floatingIpId);
54+
if (!HetznerAPIClient::hasError($response)) {
55+
return FloatingIp::parse(json_decode((string)$response->getBody())->floating_ip);
5156
}
5257
}
5358

@@ -67,15 +72,16 @@ public function create(
6772
string $description = null,
6873
Location $location = null,
6974
Server $server = null
70-
): FloatingIp {
75+
): FloatingIp
76+
{
7177
$response = $this->httpClient->post('floating_ips', [
7278
'type' => $type,
7379
'description' => $description,
7480
'server' => $server ?: $server->id,
7581
'home_location' => $location ?: $location->name,
7682
]);
77-
if (! HetznerAPIClient::hasError($response)) {
78-
return FloatingIp::parse(json_decode((string) $response->getBody())->floating_ip);
83+
if (!HetznerAPIClient::hasError($response)) {
84+
return FloatingIp::parse(json_decode((string)$response->getBody())->floating_ip);
7985
}
8086
}
8187

src/Models/ISOs/ISOs.php

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
use LKDev\HetznerCloud\HetznerAPIClient;
1212
use LKDev\HetznerCloud\Models\Model;
13+
use LKDev\HetznerCloud\RequestOpts;
1314

1415
class ISOs extends Model
1516
{
@@ -22,14 +23,18 @@ class ISOs extends Model
2223
* Returns all iso objects.
2324
*
2425
* @see https://docs.hetzner.cloud/#resources-isos-get
26+
* @param RequestOpts $requestOpts
2527
* @return array
2628
* @throws \LKDev\HetznerCloud\APIException
2729
*/
28-
public function all(): array
30+
public function all(RequestOpts $requestOpts): array
2931
{
30-
$response = $this->httpClient->get('isos');
31-
if (! HetznerAPIClient::hasError($response)) {
32-
return self::parse(json_decode((string) $response->getBody()))->isos;
32+
if ($requestOpts == null) {
33+
$requestOpts = new RequestOpts();
34+
}
35+
$response = $this->httpClient->get('isos' . $requestOpts->buildQuery());
36+
if (!HetznerAPIClient::hasError($response)) {
37+
return self::parse(json_decode((string)$response->getBody()))->isos;
3338
}
3439
}
3540

@@ -43,17 +48,17 @@ public function all(): array
4348
*/
4449
public function get(int $isoId): ISO
4550
{
46-
$response = $this->httpClient->get('isos/'.$isoId);
47-
if (! HetznerAPIClient::hasError($response)) {
48-
return ISO::parse(json_decode((string) $response->getBody())->iso);
51+
$response = $this->httpClient->get('isos/' . $isoId);
52+
if (!HetznerAPIClient::hasError($response)) {
53+
return ISO::parse(json_decode((string)$response->getBody())->iso);
4954
}
5055
}
5156

5257
/**
5358
* @param $input
5459
* @return $this
5560
*/
56-
public function setAdditionalData( $input)
61+
public function setAdditionalData($input)
5762
{
5863
$this->isos = collect($input->isos)->map(function ($iso, $key) {
5964
return ISO::parse($iso);

src/Models/Prices/Prices.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
use LKDev\HetznerCloud\HetznerAPIClient;
1212
use LKDev\HetznerCloud\Models\Model;
13+
use LKDev\HetznerCloud\RequestOpts;
1314

1415
/**
1516
* Class Prices
@@ -26,12 +27,16 @@ class Prices extends Model
2627
* Returns all pricing information.
2728
*
2829
* @see https://docs.hetzner.cloud/#pricing-get-all-prices
30+
* @param RequestOpts $requestOpts
2931
* @return \stdClass
3032
* @throws \LKDev\HetznerCloud\APIException
3133
*/
32-
public function all(): \stdClass
34+
public function all(RequestOpts $requestOpts): \stdClass
3335
{
34-
$response = $this->httpClient->get('pricing');
36+
if ($requestOpts == null) {
37+
$requestOpts = new RequestOpts();
38+
}
39+
$response = $this->httpClient->get('pricing' . $requestOpts->buildQuery());
3540
if (!HetznerAPIClient::hasError($response)) {
3641
$this->prices = json_decode((string)$response->getBody())->pricing;
3742
return $this->prices;

src/Models/SSHKeys/SSHKeys.php

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
use LKDev\HetznerCloud\HetznerAPIClient;
1212
use LKDev\HetznerCloud\Models\Model;
13+
use LKDev\HetznerCloud\RequestOpts;
1314

1415
/**
1516
*
@@ -31,31 +32,37 @@ class SSHKeys extends Model
3132
* @throws \LKDev\HetznerCloud\APIException
3233
*/
3334
public function create(
34-
string $name,
35-
string $publicKey
36-
): SSHKey {
37-
$response = $this->httpClient->post('ssh_keys', [
38-
'json' => [
39-
'name' => $name,
40-
'public_key' => $publicKey,
41-
],
42-
]);
43-
if (! HetznerAPIClient::hasError($response)) {
44-
return SSHKey::parse(json_decode((string) $response->getBody())->ssh_key);
45-
}
35+
string $name,
36+
string $publicKey
37+
): SSHKey
38+
{
39+
$response = $this->httpClient->post('ssh_keys', [
40+
'json' => [
41+
'name' => $name,
42+
'public_key' => $publicKey,
43+
],
44+
]);
45+
if (!HetznerAPIClient::hasError($response)) {
46+
return SSHKey::parse(json_decode((string)$response->getBody())->ssh_key);
47+
}
4648
}
4749

4850
/**
4951
* Returns all ssh key objects.
5052
*
5153
* @see https://docs.hetzner.cloud/#resources-ssh-keys-get
54+
* @param RequestOpts $requestOpts
5255
* @return array
5356
* @throws \LKDev\HetznerCloud\APIException
5457
*/
55-
public function all():array{
56-
$response = $this->httpClient->get('ssh_keys');
57-
if(!HetznerAPIClient::hasError($response)){
58-
return self::parse(json_decode((string) $response->getBody()))->sshKeys;
58+
public function all(RequestOpts $requestOpts): array
59+
{
60+
if ($requestOpts == null) {
61+
$requestOpts = new RequestOpts();
62+
}
63+
$response = $this->httpClient->get('ssh_keys' . $requestOpts->buildQuery());
64+
if (!HetznerAPIClient::hasError($response)) {
65+
return self::parse(json_decode((string)$response->getBody()))->sshKeys;
5966
}
6067
}
6168

@@ -67,29 +74,32 @@ public function all():array{
6774
* @return \LKDev\HetznerCloud\Models\SSHKeys\SSHKey
6875
* @throws \LKDev\HetznerCloud\APIException
6976
*/
70-
public function get(int $sshKeyId): SSHKey{
71-
$response = $this->httpClient->get('ssh_keys/'.$sshKeyId);
72-
if (! HetznerAPIClient::hasError($response)) {
73-
return SSHKey::parse(json_decode((string) $response->getBody())->ssh_key);
77+
public function get(int $sshKeyId): SSHKey
78+
{
79+
$response = $this->httpClient->get('ssh_keys/' . $sshKeyId);
80+
if (!HetznerAPIClient::hasError($response)) {
81+
return SSHKey::parse(json_decode((string)$response->getBody())->ssh_key);
7482
}
7583
}
84+
7685
/**
7786
* @param $input
7887
* @return $this
7988
*/
80-
public function setAdditionalData( $input)
89+
public function setAdditionalData($input)
8190
{
8291
$this->sshKeys = collect($input->ssh_keys)->map(function ($sshKey, $key) {
8392
return SSHKey::parse($sshKey);
8493
})->toArray();
8594

8695
return $this;
8796
}
97+
8898
/**
8999
* @param $input
90100
* @return $this|static
91101
*/
92-
public static function parse( $input)
102+
public static function parse($input)
93103
{
94104
return (new self())->setAdditionalData($input);
95105
}

src/Models/Servers/Servers.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use LKDev\HetznerCloud\Models\Locations\Location;
1717
use LKDev\HetznerCloud\Models\Model;
1818
use LKDev\HetznerCloud\Models\Servers\Types\ServerType;
19+
use LKDev\HetznerCloud\RequestOpts;
1920

2021
/**
2122
*
@@ -31,12 +32,16 @@ class Servers extends Model
3132
* Returns all existing server objects.
3233
*
3334
* @see https://docs.hetzner.cloud/#resources-servers-get
35+
* @param RequestOpts|null $requestOpts
3436
* @return array
3537
* @throws \LKDev\HetznerCloud\APIException
3638
*/
37-
public function all(): array
39+
public function all(RequestOpts $requestOpts = null): array
3840
{
39-
$response = $this->httpClient->get('servers');
41+
if ($requestOpts == null) {
42+
$requestOpts = new RequestOpts();
43+
}
44+
$response = $this->httpClient->get('servers' . $requestOpts->buildQuery());
4045
if (!HetznerAPIClient::hasError($response)) {
4146
return self::parse(json_decode((string)$response->getBody()))->servers;
4247
}

src/Models/Servers/Types/ServerTypes.php

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
use LKDev\HetznerCloud\HetznerAPIClient;
1212
use LKDev\HetznerCloud\Models\Model;
13+
use LKDev\HetznerCloud\RequestOpts;
1314

1415
/**
1516
*
@@ -22,14 +23,18 @@ class ServerTypes extends Model
2223
public $serverTypes;
2324

2425
/**
26+
* @param RequestOpts $requestOpts
2527
* @return array
2628
* @throws \LKDev\HetznerCloud\APIException
2729
*/
28-
public function all(): array
30+
public function all(RequestOpts $requestOpts): array
2931
{
30-
$response = $this->httpClient->get('server_types');
31-
if (! HetznerAPIClient::hasError($response)) {
32-
return self::parse(json_decode((string) $response->getBody()))->serverTypes;
32+
if ($requestOpts == null) {
33+
$requestOpts = new RequestOpts();
34+
}
35+
$response = $this->httpClient->get('server_types' . $requestOpts->buildQuery());
36+
if (!HetznerAPIClient::hasError($response)) {
37+
return self::parse(json_decode((string)$response->getBody()))->serverTypes;
3338
}
3439
}
3540

@@ -40,17 +45,17 @@ public function all(): array
4045
*/
4146
public function get(int $serverTypeId): ServerType
4247
{
43-
$response = $this->httpClient->get('server_types/'.$serverTypeId);
44-
if (! HetznerAPIClient::hasError($response)) {
45-
return ServerType::parse(json_decode((string) $response->getBody())->server_type);
48+
$response = $this->httpClient->get('server_types/' . $serverTypeId);
49+
if (!HetznerAPIClient::hasError($response)) {
50+
return ServerType::parse(json_decode((string)$response->getBody())->server_type);
4651
}
4752
}
4853

4954
/**
5055
* @param $input
5156
* @return $this
5257
*/
53-
public function setAdditionalData( $input)
58+
public function setAdditionalData($input)
5459
{
5560
$this->serverTypes = collect($input->server_types)->map(function ($serverType, $key) {
5661
return ServerType::parse($serverType);
@@ -63,7 +68,7 @@ public function setAdditionalData( $input)
6368
* @param $input
6469
* @return $this|static
6570
*/
66-
public static function parse( $input)
71+
public static function parse($input)
6772
{
6873
return (new self())->setAdditionalData($input);
6974
}

0 commit comments

Comments
 (0)