Skip to content

Commit b30420f

Browse files
committed
next up: tests
1 parent a7cc889 commit b30420f

File tree

5 files changed

+68
-154
lines changed

5 files changed

+68
-154
lines changed

src/PreparedQuery/PreparedQueryClient.php

Lines changed: 18 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
use DCarbone\PHPConsulAPI\AbstractClient;
2222
use DCarbone\PHPConsulAPI\QueryOptions;
23-
use DCarbone\PHPConsulAPI\Request;
2423
use DCarbone\PHPConsulAPI\ValuedWriteStringResponse;
2524
use DCarbone\PHPConsulAPI\WriteOptions;
2625
use DCarbone\PHPConsulAPI\WriteResponse;
@@ -38,16 +37,10 @@ class PreparedQueryClient extends AbstractClient
3837
*/
3938
public function Create(PreparedQueryDefinition $query, ?WriteOptions $opts = null): ValuedWriteStringResponse
4039
{
41-
$r = new Request('POST', 'v1/query', $this->config, $query);
42-
$r->applyOptions($opts);
43-
44-
/** @var \Psr\Http\Message\ResponseInterface $response */
45-
[$duration, $response, $err] = $this->_requireOK($this->_do($r));
46-
if (null !== $err) {
47-
return new ValuedWriteStringResponse('', null, $err);
48-
}
49-
50-
return new ValuedWriteStringResponse((string) $response->getBody(), $this->_buildWriteMeta($duration), null);
40+
$resp = $this->_doPost('v1/query', $query, $opts);
41+
$ret = new ValuedWriteStringResponse();
42+
$this->_hydrateResponse($resp, $ret);
43+
return $ret;
5144
}
5245

5346
/**
@@ -58,16 +51,7 @@ public function Create(PreparedQueryDefinition $query, ?WriteOptions $opts = nul
5851
*/
5952
public function Update(PreparedQueryDefinition $query, ?WriteOptions $opts = null): WriteResponse
6053
{
61-
$r = new Request('PUT', 'v1/query', $this->config, $query);
62-
$r->applyOptions($opts);
63-
64-
/** @var \Psr\Http\Message\ResponseInterface $response */
65-
[$duration, $_, $err] = $this->_requireOK($this->_do($r));
66-
if (null !== $err) {
67-
return new WriteResponse(null, $err);
68-
}
69-
70-
return new WriteResponse($this->_buildWriteMeta($duration), null);
54+
return $this->_executePut('v1/query', $query, $opts);
7155
}
7256

7357
/**
@@ -77,19 +61,10 @@ public function Update(PreparedQueryDefinition $query, ?WriteOptions $opts = nul
7761
*/
7862
public function List(?QueryOptions $opts = null): PreparedQueryDefinitionsResponse
7963
{
80-
$r = new Request('GET', 'v1/query', $this->config, null);
81-
$r->applyOptions($opts);
82-
83-
/** @var \Psr\Http\Message\ResponseInterface $response */
84-
[$duration, $response, $err] = $this->_requireOK($this->_do($r));
85-
if (null !== $err) {
86-
return new PreparedQueryDefinitionsResponse(null, null, $err);
87-
}
88-
89-
$qm = $this->_buildQueryMeta($duration, $response, $r->getUri());
90-
91-
[$data, $err] = $this->_decodeBody($response->getBody());
92-
return new PreparedQueryDefinitionsResponse($data, $qm, $err);
64+
$resp = $this->_doGet('v1/query', $opts);
65+
$ret = new PreparedQueryDefinitionsResponse();
66+
$this->_hydrateResponse($resp, $ret);
67+
return $ret;
9368
}
9469

9570
/**
@@ -100,19 +75,10 @@ public function List(?QueryOptions $opts = null): PreparedQueryDefinitionsRespon
10075
*/
10176
public function Get(string $queryID, ?QueryOptions $opts = null): PreparedQueryDefinitionsResponse
10277
{
103-
$r = new Request('GET', \sprintf('v1/query/%s', $queryID), $this->config, null);
104-
$r->applyOptions($opts);
105-
106-
/** @var \Psr\Http\Message\ResponseInterface $response */
107-
[$duration, $response, $err] = $this->_requireOK($this->_do($r));
108-
if (null !== $err) {
109-
return new PreparedQueryDefinitionsResponse(null, null, $err);
110-
}
111-
112-
$qm = $this->_buildQueryMeta($duration, $response, $r->getUri());
113-
114-
[$data, $err] = $this->_decodeBody($response->getBody());
115-
return new PreparedQueryDefinitionsResponse($data, $qm, $err);
78+
$resp = $this->_doGet(\sprintf('v1/query/%s', $queryID), $opts);
79+
$ret = new PreparedQueryDefinitionsResponse();
80+
$this->_hydrateResponse($resp, $ret);
81+
return $ret;
11682
}
11783

11884
/**
@@ -123,18 +89,7 @@ public function Get(string $queryID, ?QueryOptions $opts = null): PreparedQueryD
12389
*/
12490
public function Delete(string $queryID, ?WriteOptions $opts = null): WriteResponse
12591
{
126-
$r = new Request('DELETE', \sprintf('v1/query/%s', $queryID), $this->config, null);
127-
$r->applyOptions($opts);
128-
129-
/** @var \Psr\Http\Message\ResponseInterface $response */
130-
[$duration, $response, $err] = $this->_requireOK($this->_do($r));
131-
if (null !== $err) {
132-
return new WriteResponse(null, $err);
133-
}
134-
135-
[$_, $err] = $this->_decodeBody($response->getBody());
136-
137-
return new WriteResponse($this->_buildWriteMeta($duration), $err);
92+
return $this->_executeDelete(\sprintf('v1/query/%s', $queryID), $opts);
13893
}
13994

14095
/**
@@ -145,18 +100,9 @@ public function Delete(string $queryID, ?WriteOptions $opts = null): WriteRespon
145100
*/
146101
public function Execute(string $queryIDOrName, ?QueryOptions $opts = null): PreparedQueryExecuteResponseResponse
147102
{
148-
$r = new Request('GET', \sprintf('v1/query/%s/execute', $queryIDOrName), $this->config, null);
149-
$r->applyOptions($opts);
150-
151-
/** @var \Psr\Http\Message\ResponseInterface $response */
152-
[$duration, $response, $err] = $this->_requireOK($this->_do($r));
153-
if (null !== $err) {
154-
return new PreparedQueryExecuteResponseResponse(null, null, $err);
155-
}
156-
157-
$qm = $this->_buildQueryMeta($duration, $response, $r->getUri());
158-
159-
[$data, $err] = $this->_decodeBody($response->getBody());
160-
return new PreparedQueryExecuteResponseResponse($data, $qm, $err);
103+
$resp = $this->_doGet(\sprintf('v1/query/%s/execute', $queryIDOrName), $opts);
104+
$ret = new PreparedQueryExecuteResponseResponse();
105+
$this->_hydrateResponse($resp, $ret);
106+
return $ret;
161107
}
162108
}

src/Session/SessionClient.php

Lines changed: 34 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
use DCarbone\PHPConsulAPI\AbstractClient;
2323
use DCarbone\PHPConsulAPI\Error;
2424
use DCarbone\PHPConsulAPI\QueryOptions;
25-
use DCarbone\PHPConsulAPI\Request;
2625
use DCarbone\PHPConsulAPI\ValuedWriteStringResponse;
2726
use DCarbone\PHPConsulAPI\WriteOptions;
2827
use DCarbone\PHPConsulAPI\WriteResponse;
@@ -72,15 +71,7 @@ public function Create(?SessionEntry $sessionEntry = null, ?WriteOptions $opts =
7271
*/
7372
public function Destroy(string $id, ?WriteOptions $opts = null): WriteResponse
7473
{
75-
$r = new Request(HTTP\MethodPut, \sprintf('v1/session/destroy/%s', $id), $this->config, null);
76-
$r->applyOptions($opts);
77-
78-
[$duration, $_, $err] = $this->_requireOK($this->_do($r));
79-
if (null !== $err) {
80-
return new WriteResponse(null, $err);
81-
}
82-
83-
return new WriteResponse($this->_buildWriteMeta($duration), null);
74+
return $this->_executePut(\sprintf('v1/session/destroy/%s', $id), null, $opts);
8475
}
8576

8677
/**
@@ -91,38 +82,32 @@ public function Destroy(string $id, ?WriteOptions $opts = null): WriteResponse
9182
*/
9283
public function Renew(string $id, ?WriteOptions $opts = null): SessionEntriesWriteResponse
9384
{
94-
$r = new Request(HTTP\MethodPut, \sprintf('v1/session/renew/%s', $id), $this->config, null);
95-
$r->applyOptions($opts);
85+
$ret = new SessionEntriesWriteResponse();
9686

97-
/** @var \Psr\Http\Message\ResponseInterface $response */
98-
[$duration, $response, $err] = $this->_do($r);
99-
if (null !== $err) {
100-
return new SessionEntriesWriteResponse(null, null, $err);
87+
$resp = $this->_doPut(\sprintf('v1/session/renew/%s', $id), null, $opts);
88+
if (null !== $resp->Err) {
89+
$ret->Err = $resp->Err;
90+
return $ret;
10191
}
10292

103-
$wm = $this->_buildWriteMeta($duration);
104-
105-
$code = $response->getStatusCode();
106-
107-
if (404 === $code) {
108-
return new SessionEntriesWriteResponse(null, $wm, null);
109-
}
93+
$ret->WriteMeta = $this->_buildWriteMeta($resp->Duration);
11094

111-
if (200 !== $code) {
112-
return new SessionEntriesWriteResponse(
113-
null,
114-
$wm,
115-
new Error(\sprintf(
95+
switch ($code = $resp->Response->getStatusCode()) {
96+
case HTTP\StatusNotFound:
97+
break;
98+
case HTTP\StatusOK:
99+
$this->_hydrateResponse($resp, $ret);
100+
break;
101+
default:
102+
$ret->Err = new Error(\sprintf(
116103
'%s::renew - Unexpected response code %d. Reason: %s',
117104
\get_class($this),
118105
$code,
119-
$response->getReasonPhrase()
120-
))
121-
);
106+
$resp->Response->getReasonPhrase()
107+
));
122108
}
123109

124-
[$data, $err] = $this->_decodeBody($response->getBody());
125-
return new SessionEntriesWriteResponse($data, $wm, $err);
110+
return $ret;
126111
}
127112

128113
/**
@@ -165,19 +150,10 @@ public function List(?QueryOptions $opts = null): SessionEntriesQueryResponse
165150
*/
166151
private function _get(string $path, ?QueryOptions $opts): SessionEntriesQueryResponse
167152
{
168-
$r = new Request(HTTP\MethodGet, $path, $this->config, null);
169-
$r->applyOptions($opts);
170-
171-
/** @var \Psr\Http\Message\ResponseInterface $response */
172-
[$duration, $response, $err] = $this->_requireOK($this->_do($r));
173-
if (null !== $err) {
174-
return new SessionEntriesQueryResponse(null, null, $err);
175-
}
176-
177-
$qm = $this->_buildQueryMeta($duration, $response, $r->getUri());
178-
179-
[$data, $err] = $this->_decodeBody($response->getBody());
180-
return new SessionEntriesQueryResponse($data, $qm, $err);
153+
$resp = $this->_doGet($path, $opts);
154+
$ret = new SessionEntriesQueryResponse();
155+
$this->_hydrateResponse($resp, $ret);
156+
return $ret;
181157
}
182158

183159
/**
@@ -189,22 +165,23 @@ private function _get(string $path, ?QueryOptions $opts): SessionEntriesQueryRes
189165
*/
190166
private function _create(string $path, SessionEntry $entry, ?WriteOptions $opts): ValuedWriteStringResponse
191167
{
192-
$r = new Request(HTTP\MethodPut, $path, $this->config, $entry->_toAPIPayload());
193-
$r->applyOptions($opts);
168+
$resp = $this->_doPut($path, $entry->_toAPIPayload(), $opts);
169+
$ret = new ValuedWriteStringResponse();
194170

195-
/** @var \Psr\Http\Message\ResponseInterface $response */
196-
[$duration, $response, $err] = $this->_requireOK($this->_do($r));
197-
if (null !== $err) {
198-
return new ValuedWriteStringResponse('', null, $err);
171+
if (null !== $resp->Err) {
172+
$ret->Err = $resp->Err;
173+
return $ret;
199174
}
200175

201-
$wm = $this->_buildWriteMeta($duration);
176+
$ret->WriteMeta = $this->_buildWriteMeta($resp->Duration);
202177

203-
[$data, $err] = $this->_decodeBody($response->getBody());
204-
if (null !== $err) {
205-
return new ValuedWriteStringResponse('', $wm, $err);
178+
$dec = $this->_decodeBody($resp->Response->getBody());
179+
if (null !== $dec->Err) {
180+
$ret->Err = $dec->Err;
181+
return $ret;
206182
}
207183

208-
return new ValuedWriteStringResponse($data['ID'] ?? '', $wm, null);
184+
$ret->Value = $dec->Decoded['ID'] ?? '';
185+
return $ret;
209186
}
210187
}

src/Session/SessionEntriesWriteResponse.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,18 @@
1919
*/
2020

2121
use DCarbone\PHPConsulAPI\AbstractResponse;
22+
use DCarbone\PHPConsulAPI\ErrorContainer;
2223
use DCarbone\PHPConsulAPI\HydratedResponseInterface;
24+
use DCarbone\PHPConsulAPI\WriteMetaContainer;
2325

2426
/**
2527
* Class SessionEntriesWriteResponse
2628
*/
2729
class SessionEntriesWriteResponse extends AbstractResponse implements HydratedResponseInterface
2830
{
31+
use WriteMetaContainer;
32+
use ErrorContainer;
33+
2934
/** @var \DCarbone\PHPConsulAPI\Session\SessionEntry[]|null */
3035
public ?array $SessionEntries = null;
3136

src/Session/SessionEntry.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,8 +315,10 @@ public function setServiceChecks(array $serviceChecks): self
315315
*/
316316
public function _toAPIPayload(): array
317317
{
318-
$a = self::jsonSerialize();
318+
$a = self::jsonSerialize();
319+
319320
$a[self::FIELD_LOCK_DELAY] = self::durToMsec($this->LockDelay);
321+
320322
return $a;
321323
}
322324

src/Status/StatusClient.php

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
use DCarbone\PHPConsulAPI\AbstractClient;
2222
use DCarbone\PHPConsulAPI\QueryOptions;
23-
use DCarbone\PHPConsulAPI\Request;
2423
use DCarbone\PHPConsulAPI\ValuedStringResponse;
2524
use DCarbone\PHPConsulAPI\ValuedStringsResponse;
2625

@@ -36,18 +35,10 @@ class StatusClient extends AbstractClient
3635
*/
3736
public function LeaderWithQueryOptions(?QueryOptions $opts): ValuedStringResponse
3837
{
39-
$r = new Request('GET', 'v1/status/leader', $this->config, null);
40-
$r->applyOptions($opts);
41-
42-
/** @var \Psr\Http\Message\ResponseInterface $response */
43-
[$_, $response, $err] = $this->_requireOK($this->_do($r));
44-
45-
if (null !== $err) {
46-
return new ValuedStringResponse('', $err);
47-
}
48-
49-
$d = $this->_decodeBody($response->getBody());
50-
return new ValuedStringResponse($d->Decoded, $d->Err);
38+
$resp = $this->_doGet('v1/status/leader', $opts);
39+
$ret = new ValuedStringResponse();
40+
$this->_hydrateResponse($resp, $ret);
41+
return $ret;
5142
}
5243

5344
/**
@@ -66,17 +57,10 @@ public function Leader(): ValuedStringResponse
6657
*/
6758
public function PeersWithQueryOptions(?QueryOptions $opts): ValuedStringsResponse
6859
{
69-
$r = new Request('GET', 'v1/status/peers', $this->config, null);
70-
$r->applyOptions($opts);
71-
72-
/** @var \Psr\Http\Message\ResponseInterface $response */
73-
[$_, $response, $err] = $this->_requireOK($this->_do($r));
74-
75-
if (null !== $err) {
76-
return new ValuedStringsResponse(null, $err);
77-
}
78-
$d = $this->_decodeBody($response->getBody());
79-
return new ValuedStringsResponse($d->Decoded, $d->Err);
60+
$resp = $this->_doGet('v1/status/peers', $opts);
61+
$ret = new ValuedStringsResponse();
62+
$this->_hydrateResponse($resp, $ret);
63+
return $ret;
8064
}
8165

8266
/**

0 commit comments

Comments
 (0)