PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.6.1
GiveWP – Donation Plugin and Fundraising Platform v4.16.6.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 / Api.php
give / vendor / vendor-prefixed / stellarwp / licensing-api-client / src Last commit date
Concerns 3 months ago Contracts 3 months ago Exceptions 3 months ago Http 3 months ago Requests 3 months ago Resources 3 months ago Responses 3 months ago Tracing 3 months ago Value 3 months ago Api.php 3 months ago ApiBuilder.php 3 months ago Config.php 3 months ago
Api.php
137 lines
1 <?php declare(strict_types=1);
2
3 namespace Give\Vendors\LiquidWeb\LicensingApiClient;
4
5 use Give\Vendors\LiquidWeb\LicensingApiClient\Contracts\LicensingClientInterface;
6 use Give\Vendors\LiquidWeb\LicensingApiClient\Http\AuthState;
7 use Give\Vendors\LiquidWeb\LicensingApiClient\Http\RequestHeaderCollection;
8 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\Contracts\CreditsResourceInterface;
9 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\Contracts\EntitlementsResourceInterface;
10 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\Contracts\LicensesResourceInterface;
11 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\Contracts\ProductsResourceInterface;
12 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\Contracts\TokensResourceInterface;
13 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\Credit\CreditsResource;
14 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\EntitlementsResource;
15 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\LicensesResource;
16 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\ProductsResource;
17 use Give\Vendors\LiquidWeb\LicensingApiClient\Resources\TokensResource;
18 use Give\Vendors\LiquidWeb\LicensingApiClient\Tracing\TraceContext;
19 use Give\Vendors\LiquidWeb\LicensingApiClient\Tracing\TraceParent;
20
21 /**
22 * Exposes the built API resources and immutable auth-state transitions.
23 */
24 final class Api implements LicensingClientInterface
25 {
26 private AuthState $authState;
27
28 private RequestHeaderCollection $requestHeaderCollection;
29
30 private LicensesResource $licenses;
31
32 private ProductsResource $products;
33
34 private CreditsResource $credits;
35
36 private EntitlementsResource $entitlements;
37
38 private TokensResource $tokens;
39
40 public function __construct(
41 AuthState $authState,
42 RequestHeaderCollection $requestHeaderCollection,
43 LicensesResource $licenses,
44 ProductsResource $products,
45 CreditsResource $credits,
46 EntitlementsResource $entitlements,
47 TokensResource $tokens
48 ) {
49 $this->authState = $authState;
50 $this->requestHeaderCollection = $requestHeaderCollection;
51 $this->licenses = $licenses;
52 $this->products = $products;
53 $this->credits = $credits;
54 $this->entitlements = $entitlements;
55 $this->tokens = $tokens;
56 }
57
58 public function entitlements(): EntitlementsResourceInterface {
59 return $this->entitlements;
60 }
61
62 public function licenses(): LicensesResourceInterface {
63 return $this->licenses;
64 }
65
66 public function products(): ProductsResourceInterface {
67 return $this->products;
68 }
69
70 public function credits(): CreditsResourceInterface {
71 return $this->credits;
72 }
73
74 public function tokens(): TokensResourceInterface {
75 return $this->tokens;
76 }
77
78 public function withoutAuth(): LicensingClientInterface {
79 return $this->cloneWithAuthState($this->authState->withoutAuth());
80 }
81
82 private function cloneWithAuthState(AuthState $authState): self {
83 return new self(
84 $authState,
85 $this->requestHeaderCollection,
86 $this->licenses->withAuthState($authState),
87 $this->products->withAuthState($authState),
88 $this->credits->withAuthState($authState),
89 $this->entitlements->withAuthState($authState),
90 $this->tokens->withAuthState($authState)
91 );
92 }
93
94 /**
95 * @param array<string, string|int|float|bool> $headers
96 */
97 public function withHeaders(array $headers): LicensingClientInterface {
98 return $this->cloneWithRequestHeaderCollection($this->requestHeaderCollection->withHeaders($headers));
99 }
100
101 public function withTraceParent(TraceParent $traceParent): LicensingClientInterface {
102 return $this->cloneWithRequestHeaderCollection($this->requestHeaderCollection->withTraceParent($traceParent));
103 }
104
105 public function withTraceContext(TraceContext $traceContext): LicensingClientInterface {
106 return $this->cloneWithRequestHeaderCollection($this->requestHeaderCollection->withTraceContext($traceContext));
107 }
108
109 public function withoutHeaders(): LicensingClientInterface {
110 return $this->cloneWithRequestHeaderCollection($this->requestHeaderCollection->withoutHeaders());
111 }
112
113 private function cloneWithRequestHeaderCollection(RequestHeaderCollection $requestHeaderCollection): self {
114 if ($this->requestHeaderCollection === $requestHeaderCollection) {
115 return $this;
116 }
117
118 return new self(
119 $this->authState,
120 $requestHeaderCollection,
121 $this->licenses->withRequestHeaderCollection($requestHeaderCollection),
122 $this->products->withRequestHeaderCollection($requestHeaderCollection),
123 $this->credits->withRequestHeaderCollection($requestHeaderCollection),
124 $this->entitlements->withRequestHeaderCollection($requestHeaderCollection),
125 $this->tokens->withRequestHeaderCollection($requestHeaderCollection)
126 );
127 }
128
129 public function withConfiguredToken(): LicensingClientInterface {
130 return $this->cloneWithAuthState($this->authState->withConfiguredToken());
131 }
132
133 public function withToken(string $token): LicensingClientInterface {
134 return $this->cloneWithAuthState($this->authState->withToken($token));
135 }
136 }
137