mirror of
https://github.com/moodle/moodle.git
synced 2025-03-22 16:40:07 +01:00
MDL-77990 enrol_lti: fix http_client shim by using curl getResponse
Fixes an error in the parsing of response headers containing multiple HTTP responses in the raw response. Curl already handles this, so let it do the work.
This commit is contained in:
parent
159a131989
commit
75ba439f5b
@ -77,23 +77,11 @@ class http_client implements IHttpClient {
|
||||
$info = $this->curlclient->get_info();
|
||||
if (!$this->curlclient->get_errno() && !$this->curlclient->error) {
|
||||
// No errors, so format the response.
|
||||
$headersize = $info['header_size'];
|
||||
$resheaders = substr($res ?? '', 0, $headersize);
|
||||
$resbody = substr($res ?? '', $headersize);
|
||||
$headerlines = array_filter(explode("\r\n", $resheaders));
|
||||
$parsedresponseheaders = [
|
||||
'httpstatus' => array_shift($headerlines)
|
||||
];
|
||||
foreach ($headerlines as $headerline) {
|
||||
$headerbits = explode(':', $headerline, 2);
|
||||
if (count($headerbits) == 2) {
|
||||
// Only parse headers having colon separation.
|
||||
$parsedresponseheaders[$headerbits[0]] = $headerbits[1];
|
||||
}
|
||||
}
|
||||
$response = new http_response(['headers' => $parsedresponseheaders, 'body' => $resbody], intval($info['http_code']));
|
||||
$resbody = substr($res ?? '', $info['header_size']);
|
||||
$headers = $this->curlclient->getResponse();
|
||||
$response = new http_response(['headers' => $headers, 'body' => $resbody], intval($info['http_code']));
|
||||
if ($response->getStatusCode() >= 400) {
|
||||
throw new http_exception($response, "An HTTP error status was received: '{$response->getHeaders()['httpstatus']}'");
|
||||
throw new http_exception($response, "An HTTP error status was received: '".reset($headers)."'");
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user