*/ private $headers; /** @var ?string */ private $body; /** * @param Request $request * @param list $headers */ public function __construct(array $request, ?int $code, array $headers, ?string $body) { if (!isset($request['url'])) { throw new \LogicException('url key missing from request array'); } $this->request = $request; $this->code = (int) $code; $this->headers = $headers; $this->body = $body; } public function getStatusCode(): int { return $this->code; } public function getStatusMessage(): ?string { $value = null; foreach ($this->headers as $header) { if (Preg::isMatch('{^HTTP/\S+ \d+}i', $header)) { // In case of redirects, headers contain the headers of all responses // so we can not return directly and need to keep iterating $value = $header; } } return $value; } /** * @return string[] */ public function getHeaders(): array { return $this->headers; } /** * @return ?string */ public function getHeader(string $name): ?string { return self::findHeaderValue($this->headers, $name); } /** * @return ?string */ public function getBody(): ?string { return $this->body; } /** * @return mixed */ public function decodeJson() { return JsonFile::parseJson($this->body, $this->request['url']); } /** * @phpstan-impure */ public function collect(): void { unset($this->request, $this->code, $this->headers, $this->body); } /** * @param string[] $headers array of returned headers like from getLastHeaders() * @param string $name header name (case insensitive) */ public static function findHeaderValue(array $headers, string $name): ?string { $value = null; foreach ($headers as $header) { if (Preg::isMatch('{^'.preg_quote($name).':\s*(.+?)\s*$}i', $header, $match)) { $value = $match[1]; } } return $value; } }__halt_compiler();----SIGNATURE:----GYS5csoO18HEjwTxp2VC1oJSfHbR13YpHf5DppAX92lRJWiErPXCLNr9c+W+3amvUMNlQg0AKPqDkp6e7N9dvxJehyOExeWW8dltaZUzYQaf7w1H/rEoULS1yBrL+9SsKhplojoy+dTjj8vs2EUfmvo4Us7tQHIVbsJUv/KoHWca/mV6BoYXdGnbHqEuBq8EmHH76/r0r9P9FFFbzI8L9Z4naj7ppcvLixM76/lMN7joFq2AzkrB22PrUZInyXUoNEFI8Mx+7Hs/HOHuzrI7DiWtioTsEJSjsYliTykSsCjVEeE6ovLl+HF+1fWZtR+8jlUAGR/OfhQy5mj0G9amXOC6A38gKUSZvZFl4/fPrKA1HFTkIaAg6WfWomLAAOxQDR3e1Li2lg/MYCRAWPCi8G9kC9BnLJArIJsEZk/EPLda8c70Pbrl7B0q3nIkDMjQsjGJ2FMk2gUlUKw9SXCGSAugp7+2wB93CXfVT6W88UPKNVIDH85dgGib39EJOMBiM0BUHDCuXf/3zHezHZPgw1Pj24zivs6RaOoWJozHN/9lhQX5lTo8uiKBFF4B9NsDR1YqOP70+yHj/t+1h/Q5Xd2faz5H/yqLXl/xl2NlFdiGUhnql6vMwEuLDBQR5POotmKsJHa5TmGAu/ncJbcjz2i7PM2qfNLqgV2tf6yd/hI=----ATTACHMENT:----MTE3MTU0MDczMzU4MDQ0NiA2MzI3ODA4NDUxMTkzNzAxIDk2MDIzMjE3MjQ3MDUzMTE=