PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.13.0
GiveWP – Donation Plugin and Fundraising Platform v4.13.0
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 / paypal / paypalhttp / lib / PayPalHttp / Encoder.php
give / vendor / paypal / paypalhttp / lib / PayPalHttp Last commit date
Serializer 5 years ago Curl.php 5 years ago Encoder.php 4 years ago Environment.php 5 years ago HttpClient.php 4 years ago HttpException.php 4 years ago HttpRequest.php 5 years ago HttpResponse.php 4 years ago IOException.php 5 years ago Injector.php 4 years ago Serializer.php 5 years ago
Encoder.php
116 lines
1 <?php
2
3 namespace PayPalHttp;
4
5 use PayPalHttp\Serializer\Form;
6 use PayPalHttp\Serializer\Json;
7 use PayPalHttp\Serializer\Multipart;
8 use PayPalHttp\Serializer\Text;
9
10 /**
11 * Class Encoder
12 * @package PayPalHttp
13 *
14 * Encoding class for serializing and deserializing request/response.
15 */
16 class Encoder
17 {
18 private $serializers = [];
19
20 function __construct()
21 {
22 $this->serializers[] = new Json();
23 $this->serializers[] = new Text();
24 $this->serializers[] = new Multipart();
25 $this->serializers[] = new Form();
26 }
27
28
29
30 public function serializeRequest(HttpRequest $request)
31 {
32 if (!array_key_exists('content-type', $request->headers)) {
33 $message = "HttpRequest does not have Content-Type header set";
34 echo $message;
35 throw new \Exception($message);
36 }
37
38 $contentType = $request->headers['content-type'];
39 /** @var Serializer $serializer */
40 $serializer = $this->serializer($contentType);
41
42 if (is_null($serializer)) {
43 $message = sprintf("Unable to serialize request with Content-Type: %s. Supported encodings are: %s", $contentType, implode(", ", $this->supportedEncodings()));
44 echo $message;
45 throw new \Exception($message);
46 }
47
48 if (!(is_string($request->body) || is_array($request->body))) {
49 $message = "Body must be either string or array";
50 echo $message;
51 throw new \Exception($message);
52 }
53
54 $serialized = $serializer->encode($request);
55
56 if (array_key_exists("content-encoding", $request->headers) && $request->headers["content-encoding"] === "gzip") {
57 $serialized = gzencode($serialized);
58 }
59 return $serialized;
60 }
61
62
63 public function deserializeResponse($responseBody, $headers)
64 {
65
66 if (!array_key_exists('content-type', $headers)) {
67 $message = "HTTP response does not have Content-Type header set";
68 echo $message;
69 throw new \Exception($message);
70 }
71
72 $contentType = $headers['content-type'];
73 $contentType = strtolower($contentType);
74 /** @var Serializer $serializer */
75 $serializer = $this->serializer($contentType);
76
77 if (is_null($serializer)) {
78 throw new \Exception(sprintf("Unable to deserialize response with Content-Type: %s. Supported encodings are: %s", $contentType, implode(", ", $this->supportedEncodings())));
79 }
80
81 if (array_key_exists("content-encoding", $headers) && $headers["content-encoding"] === "gzip") {
82 $responseBody = gzdecode($responseBody);
83 }
84
85 return $serializer->decode($responseBody);
86 }
87
88 private function serializer($contentType)
89 {
90 /** @var Serializer $serializer */
91 foreach ($this->serializers as $serializer) {
92 try {
93 if (preg_match($serializer->contentType(), $contentType) == 1) {
94 return $serializer;
95 }
96 } catch (\Exception $ex) {
97 $message = sprintf("Error while checking content type of %s: %s", get_class($serializer), $ex->getMessage());
98 echo $message;
99 throw new \Exception($message, $ex->getCode(), $ex);
100 }
101 }
102
103 return NULL;
104 }
105
106 private function supportedEncodings()
107 {
108 $values = [];
109 /** @var Serializer $serializer */
110 foreach ($this->serializers as $serializer) {
111 $values[] = $serializer->contentType();
112 }
113 return $values;
114 }
115 }
116