OXIESEC PANEL
- Current Dir:
/
/
var
/
www
/
firebase
/
vendor
/
kreait
/
firebase-php
/
src
/
Firebase
/
Http
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
08/12/2024 10:35:39 AM
rwxr-xr-x
📄
ErrorResponseParser.php
1.08 KB
08/12/2024 10:35:38 AM
rw-r--r--
📄
HasSubRequests.php
150 bytes
08/12/2024 10:35:38 AM
rw-r--r--
📄
HasSubResponses.php
153 bytes
08/12/2024 10:35:38 AM
rw-r--r--
📄
HttpClientOptions.php
3.36 KB
08/12/2024 10:35:38 AM
rw-r--r--
📄
Middleware.php
4.13 KB
08/12/2024 10:35:38 AM
rw-r--r--
📄
RequestWithSubRequests.php
2.87 KB
08/12/2024 10:35:38 AM
rw-r--r--
📄
Requests.php
1.38 KB
08/12/2024 10:35:38 AM
rw-r--r--
📄
ResponseWithSubResponses.php
2.57 KB
08/12/2024 10:35:38 AM
rw-r--r--
📄
Responses.php
691 bytes
08/12/2024 10:35:38 AM
rw-r--r--
📄
WrappedPsr7Request.php
3.23 KB
08/12/2024 10:35:38 AM
rw-r--r--
📄
WrappedPsr7Response.php
2.52 KB
08/12/2024 10:35:38 AM
rw-r--r--
Editing: ResponseWithSubResponses.php
Close
<?php declare(strict_types=1); namespace Kreait\Firebase\Http; use GuzzleHttp\Psr7\Response; use Kreait\Firebase\Exception\InvalidArgumentException; use Psr\Http\Message\ResponseInterface; use Riverline\MultiPartParser\Converters\PSR7; use Riverline\MultiPartParser\StreamedPart; use Throwable; final class ResponseWithSubResponses implements HasSubResponses, ResponseInterface { use WrappedPsr7Response; private Responses $subResponses; public function __construct(ResponseInterface $response) { $this->wrappedResponse = $response; $this->subResponses = $this->getSubResponsesFromResponse($response); } public function subResponses(): Responses { return $this->subResponses; } private function getSubResponsesFromResponse(ResponseInterface $response): Responses { try { $parser = PSR7::convert($response); } catch (Throwable $e) { return new Responses(); } if (!$parser->isMultiPart()) { return new Responses(); } $subResponses = []; foreach ($parser->getParts() as $part) { $partHeaders = $part->getHeaders(); $realPartStream = \fopen('php://temp', 'rwb'); if (!$realPartStream) { continue; } \fwrite($realPartStream, $part->getBody()); \rewind($realPartStream); $realPart = new StreamedPart($realPartStream); $headers = $realPart->getHeaders(); $headerKeys = \array_keys($headers); // The first header is not a header, it's the start line of a HTTP response $startLine = (string) \array_shift($headerKeys); \array_shift($headers); if (\preg_match('@^http/(?P<version>[\S]+)\s(?P<status>\d{3})\s(?P<reason>.+)$@i', $startLine, $startLineMatches) !== 1) { throw new InvalidArgumentException('At least one sub response does not contain a start line'); } $subResponse = new Response( (int) $startLineMatches['status'], $headers, $realPart->getBody(), $startLineMatches['version'], $startLineMatches['reason'] ); foreach ($partHeaders as $name => $value) { $subResponse = $subResponse->withAddedHeader($name, $value); } $subResponses[] = $subResponse; } return new Responses(...$subResponses); } }