PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.17.0
GiveWP – Donation Plugin and Fundraising Platform v4.17.0
4.17.0 4.16.9 4.16.8.1 4.16.8 4.16.7.2 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 All 256 releases
give / vendor / vendor-prefixed / stellarwp / licensing-api-client / src / Api.php

Api.php in GiveWP – Donation Plugin and Fundraising Platform 4.17.0, at vendor/vendor-prefixed/stellarwp/licensing-api-client/src/Api.php

137 lines 4.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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