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 / TokensResource.php
give / vendor / vendor-prefixed / stellarwp / licensing-api-client / src / Resources Last commit date
Concerns 3 months ago Contracts 3 months ago Credit 3 months ago EntitlementsResource.php 3 months ago LicensesResource.php 3 months ago ProductsResource.php 3 months ago TokensResource.php 3 months ago
TokensResource.php
170 lines
1 <?php declare(strict_types=1);
2
3 namespace Give\Vendors\LiquidWeb\LicensingApiClient\Resources;
4
5 use JsonException;
6 use Give\Vendors\LiquidWeb\LicensingApiClient\Exceptions\Contracts\ApiErrorExceptionInterface;
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\Token\Create as CreateRequest;
14 use Give\Vendors\LiquidWeb\LicensingApiClient\Requests\Token\Revoke as RevokeRequest;
15 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\Concerns\RebindsAuthState;
16 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\Concerns\RebindsRequestHeaderCollection;
17 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\Contracts\TokensResourceInterface;
18 use Give\Vendors\LiquidWeb\LicensingApiClient\Responses\Token\Auth;
19 use Give\Vendors\LiquidWeb\LicensingApiClient\Responses\Token\TokenList;
20 use Give\Vendors\LiquidWeb\LicensingApiClient\Responses\Token\ValueObjects\TokenItem;
21 use Give\Vendors\Psr\Http\Client\ClientExceptionInterface;
22
23 /**
24 * Provides operations for the tokens API resource.
25 *
26 * @phpstan-import-type CreateTokenPayload from CreateRequest
27 * @phpstan-import-type RevokeTokenPayload from RevokeRequest
28 * @phpstan-import-type TokenItemPayload from TokenItem
29 * @phpstan-type CreateResponsePayload TokenItemPayload
30 * @phpstan-type RevokeResponsePayload TokenItemPayload
31 * @phpstan-type AuthResponsePayload array{authorized: bool}
32 * @phpstan-type TokenListPayload array{
33 * tokens: list<array{
34 * id: int,
35 * token: string,
36 * license_id: int,
37 * domain: string,
38 * is_revoked: bool,
39 * created_at: string,
40 * updated_at: string
41 * }>
42 * }
43 */
44 final class TokensResource implements TokensResourceInterface
45 {
46 use RebindsAuthState;
47 use RebindsRequestHeaderCollection;
48
49 private RequestExecutor $requestExecutor;
50
51 private ApiUriFactory $apiUriFactory;
52
53 private AuthState $authState;
54
55 private RequestHeaderCollection $requestHeaderCollection;
56
57 public function __construct(
58 RequestExecutor $requestExecutor,
59 ApiUriFactory $apiUriFactory,
60 AuthState $authState,
61 RequestHeaderCollection $requestHeaderCollection
62 ) {
63 $this->requestExecutor = $requestExecutor;
64 $this->apiUriFactory = $apiUriFactory;
65 $this->authState = $authState;
66 $this->requestHeaderCollection = $requestHeaderCollection;
67 }
68
69 /**
70 * @throws ApiErrorExceptionInterface
71 * @throws MissingAuthenticationException
72 * @throws UnexpectedResponseException
73 * @throws ClientExceptionInterface
74 * @throws JsonException
75 */
76 public function list(string $licenseKey): TokenList {
77 $result = $this->requestExecutor->executeJson(
78 'GET',
79 $this->apiUriFactory->make('/tokens'),
80 ['license_key' => $licenseKey],
81 null,
82 $this->authState->requiredToken(),
83 $this->requestHeaderCollection->all()
84 );
85
86 /** @var TokenListPayload $result */
87 return TokenList::from($result);
88 }
89
90 /**
91 * @throws ApiErrorExceptionInterface
92 * @throws MissingAuthenticationException
93 * @throws UnexpectedResponseException
94 * @throws ClientExceptionInterface
95 * @throws JsonException
96 */
97 public function create(CreateRequest $request): TokenItem {
98 /** @var CreateTokenPayload $body */
99 $body = $request->toArray();
100
101 $result = $this->requestExecutor->executeJson(
102 'POST',
103 $this->apiUriFactory->make('/tokens/create'),
104 [],
105 $body,
106 $this->authState->requiredToken(),
107 $this->requestHeaderCollection->all()
108 );
109
110 /** @var CreateResponsePayload $result */
111 return TokenItem::from($result);
112 }
113
114 /**
115 * @throws ApiErrorExceptionInterface
116 * @throws MissingAuthenticationException
117 * @throws UnexpectedResponseException
118 * @throws ClientExceptionInterface
119 * @throws JsonException
120 */
121 public function revoke(RevokeRequest $request): TokenItem {
122 /** @var RevokeTokenPayload $body */
123 $body = $request->toArray();
124
125 $result = $this->requestExecutor->executeJson(
126 'PUT',
127 $this->apiUriFactory->make('/tokens/revoke'),
128 [],
129 $body,
130 $this->authState->requiredToken(),
131 $this->requestHeaderCollection->all()
132 );
133
134 /** @var RevokeResponsePayload $result */
135 return TokenItem::from($result);
136 }
137
138 /**
139 * @throws ApiErrorExceptionInterface
140 * @throws UnexpectedResponseException
141 * @throws ClientExceptionInterface
142 * @throws JsonException
143 */
144 public function auth(string $licenseKey, string $token, string $domain): Auth {
145 $result = $this->requestExecutor->executeJson(
146 'GET',
147 $this->apiUriFactory->make('/tokens/auth'),
148 [
149 'license_key' => $licenseKey,
150 'token' => $token,
151 'domain' => $domain,
152 ],
153 null,
154 $this->authState->optionalToken(),
155 $this->requestHeaderCollection->all()
156 );
157
158 /** @var AuthResponsePayload $result */
159 return Auth::from($result);
160 }
161
162 protected function rebindWithAuthState(AuthState $authState): self {
163 return new self($this->requestExecutor, $this->apiUriFactory, $authState, $this->requestHeaderCollection);
164 }
165
166 protected function rebindWithRequestHeaderCollection(RequestHeaderCollection $requestHeaderCollection): self {
167 return new self($this->requestExecutor, $this->apiUriFactory, $this->authState, $requestHeaderCollection);
168 }
169 }
170