PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / trunk
Tutor LMS – eLearning and online course solution vtrunk
4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 4.0.2 4.0.1 4.0.0 3.9.15 3.9.14 3.9.13 3.9.12 3.9.11 trunk 1.0.0 1.0.0-alpha 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.2.0 1.2.1 1.2.11 1.2.12 1.2.13 1.2.20 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.15 1.9.16 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.3.0 2.4.0 2.5.0 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.1.0 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.8.0 3.8.1 3.8.2 3.8.3 3.9.0 3.9.1 3.9.10 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9
tutor / ecommerce / PaymentGateways / Paypal / vendor / guzzlehttp / guzzle / src / PrepareBodyMiddleware.php
tutor / ecommerce / PaymentGateways / Paypal / vendor / guzzlehttp / guzzle / src Last commit date
Cookie 2 months ago Exception 2 months ago Handler 2 months ago BodySummarizer.php 1 year ago BodySummarizerInterface.php 1 year ago Client.php 2 months ago ClientInterface.php 1 year ago ClientTrait.php 1 year ago HandlerStack.php 2 months ago MessageFormatter.php 1 year ago MessageFormatterInterface.php 1 year ago Middleware.php 2 months ago Pool.php 2 months ago PrepareBodyMiddleware.php 2 months ago RedirectMiddleware.php 2 months ago RequestOptions.php 2 months ago RetryMiddleware.php 2 months ago TransferStats.php 1 year ago TransportSharing.php 2 months ago Utils.php 2 months ago functions.php 2 months ago functions_include.php 1 year ago
PrepareBodyMiddleware.php
106 lines
1 <?php
2
3 namespace GuzzleHttp;
4
5 use GuzzleHttp\Promise\PromiseInterface;
6 use Psr\Http\Message\RequestInterface;
7
8 /**
9 * Prepares requests that contain a body, adding the Content-Length,
10 * Content-Type, and Expect headers.
11 *
12 * @final
13 */
14 class PrepareBodyMiddleware
15 {
16 /**
17 * @var callable(RequestInterface, array): PromiseInterface
18 */
19 private $nextHandler;
20
21 /**
22 * @param callable(RequestInterface, array): PromiseInterface $nextHandler Next handler to invoke.
23 */
24 public function __construct(callable $nextHandler)
25 {
26 $this->nextHandler = $nextHandler;
27 }
28
29 public function __invoke(RequestInterface $request, array $options): PromiseInterface
30 {
31 $fn = $this->nextHandler;
32
33 // Don't do anything if the request has no body.
34 if ($request->getBody()->getSize() === 0) {
35 return $fn($request, $options);
36 }
37
38 $modify = [];
39
40 // Add a default content-type if possible.
41 if (!$request->hasHeader('Content-Type')) {
42 if ($uri = $request->getBody()->getMetadata('uri')) {
43 if (is_string($uri) && $type = Psr7\MimeType::fromFilename($uri)) {
44 $modify['set_headers']['Content-Type'] = $type;
45 }
46 }
47 }
48
49 // Add a default content-length or transfer-encoding header.
50 if (!$request->hasHeader('Content-Length')
51 && !$request->hasHeader('Transfer-Encoding')
52 ) {
53 $size = $request->getBody()->getSize();
54 if ($size !== null) {
55 $modify['set_headers']['Content-Length'] = (string) $size;
56 } else {
57 $modify['set_headers']['Transfer-Encoding'] = 'chunked';
58 }
59 }
60
61 // Add the expect header if needed.
62 $this->addExpectHeader($request, $options, $modify);
63
64 return $fn(Psr7\Utils::modifyRequest($request, $modify), $options);
65 }
66
67 /**
68 * Add expect header
69 */
70 private function addExpectHeader(RequestInterface $request, array $options, array &$modify): void
71 {
72 // Determine if the Expect header should be used
73 if ($request->hasHeader('Expect')) {
74 return;
75 }
76
77 $expect = $options['expect'] ?? null;
78
79 // Return if disabled or using HTTP/1.0
80 if ($expect === false || $request->getProtocolVersion() === '1.0') {
81 return;
82 }
83
84 // The expect header is unconditionally enabled
85 if ($expect === true) {
86 $modify['set_headers']['Expect'] = '100-Continue';
87
88 return;
89 }
90
91 // By default, send the expect header when the payload is > 1mb
92 if ($expect === null) {
93 $expect = 1048576;
94 }
95
96 // Always add if the body cannot be rewound, the size cannot be
97 // determined, or the size is greater than the cutoff threshold
98 $body = $request->getBody();
99 $size = $body->getSize();
100
101 if ($size === null || $size >= (int) $expect || !$body->isSeekable()) {
102 $modify['set_headers']['Expect'] = '100-Continue';
103 }
104 }
105 }
106