forked from GNUsocial/gnu-social
Use delivered content-type to parse XML_XRD
In issue #205 we saw data coming in with an additional line-break before the JSON data which fuzzed the auto-detection in XML_XRD (which assumed a { as the first character). If we use the Content-type header from HTTP we can avoid that issue.
This commit is contained in:
parent
cfd9aee57b
commit
3987cad9b7
@ -122,8 +122,22 @@ class Discovery
|
||||
throw new Exception('Unexpected HTTP status code.');
|
||||
}
|
||||
|
||||
$xrd->loadString($response->getBody());
|
||||
switch ($response->getHeader('content-type')) {
|
||||
case self::JRD_MIMETYPE_OLD:
|
||||
case self::JRD_MIMETYPE:
|
||||
$type = 'json';
|
||||
break;
|
||||
case self::XRD_MIMETYPE:
|
||||
$type = 'xml';
|
||||
break;
|
||||
default:
|
||||
// fall back to letting XML_XRD auto-detect
|
||||
common_debug('No recognized content-type header for resource descriptor body.');
|
||||
$type = null;
|
||||
}
|
||||
$xrd->loadString($response->getBody(), $type);
|
||||
return $xrd;
|
||||
|
||||
} catch (Exception $e) {
|
||||
common_log(LOG_INFO, sprintf('%s: Failed for %s: %s', _ve($class), _ve($uri), _ve($e->getMessage())));
|
||||
continue;
|
||||
|
Loading…
Reference in New Issue
Block a user