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 / CreditsQuotasResource.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
CreditsQuotasResource.php
147 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\SetQuota;
14 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\Concerns\RebindsAuthState;
15 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\Concerns\RebindsRequestHeaderCollection;
16 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\Contracts\CreditsQuotasResourceInterface;
17 use Give\Vendors\LiquidWeb\LicensingApiClient\Responses\Credit\DeleteQuota;
18 use Give\Vendors\LiquidWeb\LicensingApiClient\Responses\Credit\QuotaCollection;
19 use Give\Vendors\LiquidWeb\LicensingApiClient\Responses\Credit\ValueObjects\SiteQuota;
20 use Give\Vendors\Psr\Http\Client\ClientExceptionInterface;
21
22 /**
23 * Provides operations for the credits quotas API resource.
24 *
25 * @phpstan-import-type SetQuotaPayload from \LiquidWeb\LicensingApiClient\Requests\Credit\SetQuota
26 * @phpstan-type SiteQuotaPayload array{
27 * domain: string,
28 * credit_type: string,
29 * quota: ?int,
30 * period: string,
31 * first_period_start: ?string,
32 * is_blocked: bool,
33 * is_uncapped: bool
34 * }
35 * @phpstan-type QuotaCollectionPayload array{
36 * quotas: list<SiteQuotaPayload>
37 * }
38 * @phpstan-type DeleteQuotaPayload array{
39 * deleted: bool
40 * }
41 */
42 final class CreditsQuotasResource implements CreditsQuotasResourceInterface
43 {
44 use RebindsAuthState;
45 use RebindsRequestHeaderCollection;
46
47 private RequestExecutor $requestExecutor;
48
49 private ApiUriFactory $apiUriFactory;
50
51 private AuthState $authState;
52
53 private RequestHeaderCollection $requestHeaderCollection;
54
55 public function __construct(
56 RequestExecutor $requestExecutor,
57 ApiUriFactory $apiUriFactory,
58 AuthState $authState,
59 RequestHeaderCollection $requestHeaderCollection
60 ) {
61 $this->requestExecutor = $requestExecutor;
62 $this->apiUriFactory = $apiUriFactory;
63 $this->authState = $authState;
64 $this->requestHeaderCollection = $requestHeaderCollection;
65 }
66
67 /**
68 * @throws ApiResponseException
69 * @throws MissingAuthenticationException
70 * @throws UnexpectedResponseException
71 * @throws ClientExceptionInterface
72 * @throws JsonException
73 */
74 public function list(string $licenseKey): QuotaCollection {
75 $result = $this->requestExecutor->executeJson(
76 'GET',
77 $this->apiUriFactory->make('/credits/quotas'),
78 [
79 'license_key' => $licenseKey,
80 ],
81 null,
82 $this->authState->requiredToken(),
83 $this->requestHeaderCollection->all()
84 );
85
86 /** @var QuotaCollectionPayload $result */
87 return QuotaCollection::from($result);
88 }
89
90 /**
91 * @throws ApiResponseException
92 * @throws MissingAuthenticationException
93 * @throws UnexpectedResponseException
94 * @throws ClientExceptionInterface
95 * @throws JsonException
96 */
97 public function set(SetQuota $request): SiteQuota {
98 /** @var SetQuotaPayload $body */
99 $body = $request->toArray();
100
101 $result = $this->requestExecutor->executeJson(
102 'POST',
103 $this->apiUriFactory->make('/credits/quotas'),
104 [],
105 $body,
106 $this->authState->requiredToken(),
107 $this->requestHeaderCollection->all()
108 );
109
110 /** @var SiteQuotaPayload $result */
111 return SiteQuota::from($result);
112 }
113
114 /**
115 * @throws ApiResponseException
116 * @throws MissingAuthenticationException
117 * @throws UnexpectedResponseException
118 * @throws ClientExceptionInterface
119 * @throws JsonException
120 */
121 public function delete(string $licenseKey, string $domain, string $creditType): DeleteQuota {
122 $result = $this->requestExecutor->executeJson(
123 'DELETE',
124 $this->apiUriFactory->make('/credits/quotas'),
125 [],
126 [
127 'license_key' => $licenseKey,
128 'domain' => $domain,
129 'credit_type' => $creditType,
130 ],
131 $this->authState->requiredToken(),
132 $this->requestHeaderCollection->all()
133 );
134
135 /** @var DeleteQuotaPayload $result */
136 return DeleteQuota::from($result);
137 }
138
139 protected function rebindWithAuthState(AuthState $authState): self {
140 return new self($this->requestExecutor, $this->apiUriFactory, $authState, $this->requestHeaderCollection);
141 }
142
143 protected function rebindWithRequestHeaderCollection(RequestHeaderCollection $requestHeaderCollection): self {
144 return new self($this->requestExecutor, $this->apiUriFactory, $this->authState, $requestHeaderCollection);
145 }
146 }
147