PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.6.1
GiveWP – Donation Plugin and Fundraising Platform v4.16.6.1
4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / vendor / vendor-prefixed / stellarwp / licensing-api-client / src / Resources / Credit / CreditsPoolsResource.php
give / vendor / vendor-prefixed / stellarwp / licensing-api-client / src / Resources / Credit Last commit date
CreditsLedgerResource.php 3 months ago CreditsPoolsResource.php 3 months ago CreditsQuotasResource.php 3 months ago CreditsResource.php 3 months ago
CreditsPoolsResource.php
179 lines
1 <?php declare(strict_types=1);
2
3 namespace Give\Vendors\LiquidWeb\LicensingApiClient\Resources\Credit;
4
5 use JsonException;
6 use Give\Vendors\LiquidWeb\LicensingApiClient\Exceptions\ApiResponseException;
7 use Give\Vendors\LiquidWeb\LicensingApiClient\Exceptions\MissingAuthenticationException;
8 use Give\Vendors\LiquidWeb\LicensingApiClient\Exceptions\UnexpectedResponseException;
9 use Give\Vendors\LiquidWeb\LicensingApiClient\Http\AuthState;
10 use Give\Vendors\LiquidWeb\LicensingApiClient\Http\Factories\ApiUriFactory;
11 use Give\Vendors\LiquidWeb\LicensingApiClient\Http\RequestExecutor;
12 use Give\Vendors\LiquidWeb\LicensingApiClient\Http\RequestHeaderCollection;
13 use Give\Vendors\LiquidWeb\LicensingApiClient\Requests\Credit\CreatePool;
14 use Give\Vendors\LiquidWeb\LicensingApiClient\Requests\Credit\DeletePool as DeletePoolRequest;
15 use Give\Vendors\LiquidWeb\LicensingApiClient\Requests\Credit\UpdatePool;
16 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\Concerns\RebindsAuthState;
17 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\Concerns\RebindsRequestHeaderCollection;
18 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\Contracts\CreditsPoolsResourceInterface;
19 use Give\Vendors\LiquidWeb\LicensingApiClient\Responses\Credit\DeletePool;
20 use Give\Vendors\LiquidWeb\LicensingApiClient\Responses\Credit\PoolCollection;
21 use Give\Vendors\LiquidWeb\LicensingApiClient\Responses\Credit\ValueObjects\CreditPool;
22 use Give\Vendors\Psr\Http\Client\ClientExceptionInterface;
23
24 /**
25 * Provides operations for the credits pools API resource.
26 *
27 * @phpstan-import-type CreatePoolPayload from CreatePool
28 * @phpstan-import-type UpdatePoolPayload from UpdatePool
29 * @phpstan-import-type DeletePoolPayload from DeletePoolRequest
30 * @phpstan-type PoolPayload array{
31 * pool_id: int,
32 * credit_type: string,
33 * credits_total: int,
34 * credits_used: int,
35 * overage_limit: ?int,
36 * priority: int,
37 * period: string,
38 * first_period_start: ?string,
39 * expires_at: ?string,
40 * is_expired: bool
41 * }
42 * @phpstan-type PoolCollectionPayload array{
43 * pools: array<int|string, PoolPayload>
44 * }
45 * @phpstan-type DeletePoolResponsePayload array{
46 * deleted: bool,
47 * pool_id: int
48 * }
49 */
50 final class CreditsPoolsResource implements CreditsPoolsResourceInterface
51 {
52 use RebindsAuthState;
53 use RebindsRequestHeaderCollection;
54
55 private RequestExecutor $requestExecutor;
56
57 private ApiUriFactory $apiUriFactory;
58
59 private AuthState $authState;
60
61 private RequestHeaderCollection $requestHeaderCollection;
62
63 public function __construct(
64 RequestExecutor $requestExecutor,
65 ApiUriFactory $apiUriFactory,
66 AuthState $authState,
67 RequestHeaderCollection $requestHeaderCollection
68 ) {
69 $this->requestExecutor = $requestExecutor;
70 $this->apiUriFactory = $apiUriFactory;
71 $this->authState = $authState;
72 $this->requestHeaderCollection = $requestHeaderCollection;
73 }
74
75 /**
76 * @throws ApiResponseException
77 * @throws MissingAuthenticationException
78 * @throws UnexpectedResponseException
79 * @throws ClientExceptionInterface
80 * @throws JsonException
81 */
82 public function list(string $licenseKey, bool $active = false): PoolCollection {
83 $result = $this->requestExecutor->executeJson(
84 'GET',
85 $this->apiUriFactory->make('/credits/pools'),
86 [
87 'license_key' => $licenseKey,
88 'active' => $active,
89 ],
90 null,
91 $this->authState->requiredToken(),
92 $this->requestHeaderCollection->all()
93 );
94
95 /** @var PoolCollectionPayload $result */
96 return PoolCollection::from($result);
97 }
98
99 /**
100 * @throws ApiResponseException
101 * @throws MissingAuthenticationException
102 * @throws UnexpectedResponseException
103 * @throws ClientExceptionInterface
104 * @throws JsonException
105 */
106 public function create(CreatePool $request): CreditPool {
107 /** @var CreatePoolPayload $body */
108 $body = $request->toArray();
109
110 $result = $this->requestExecutor->executeJson(
111 'POST',
112 $this->apiUriFactory->make('/credits/pools'),
113 [],
114 $body,
115 $this->authState->requiredToken(),
116 $this->requestHeaderCollection->all()
117 );
118
119 /** @var PoolPayload $result */
120 return CreditPool::from($result);
121 }
122
123 /**
124 * @throws ApiResponseException
125 * @throws MissingAuthenticationException
126 * @throws UnexpectedResponseException
127 * @throws ClientExceptionInterface
128 * @throws JsonException
129 */
130 public function update(UpdatePool $request): CreditPool {
131 /** @var UpdatePoolPayload $body */
132 $body = $request->toArray();
133
134 $result = $this->requestExecutor->executeJson(
135 'PATCH',
136 $this->apiUriFactory->make('/credits/pools'),
137 [],
138 $body,
139 $this->authState->requiredToken(),
140 $this->requestHeaderCollection->all()
141 );
142
143 /** @var PoolPayload $result */
144 return CreditPool::from($result);
145 }
146
147 /**
148 * @throws ApiResponseException
149 * @throws MissingAuthenticationException
150 * @throws UnexpectedResponseException
151 * @throws ClientExceptionInterface
152 * @throws JsonException
153 */
154 public function delete(DeletePoolRequest $request): DeletePool {
155 /** @var DeletePoolPayload $body */
156 $body = $request->toArray();
157
158 $result = $this->requestExecutor->executeJson(
159 'DELETE',
160 $this->apiUriFactory->make('/credits/pools'),
161 [],
162 $body,
163 $this->authState->requiredToken(),
164 $this->requestHeaderCollection->all()
165 );
166
167 /** @var DeletePoolResponsePayload $result */
168 return DeletePool::from($result);
169 }
170
171 protected function rebindWithAuthState(AuthState $authState): self {
172 return new self($this->requestExecutor, $this->apiUriFactory, $authState, $this->requestHeaderCollection);
173 }
174
175 protected function rebindWithRequestHeaderCollection(RequestHeaderCollection $requestHeaderCollection): self {
176 return new self($this->requestExecutor, $this->apiUriFactory, $this->authState, $requestHeaderCollection);
177 }
178 }
179