if (!$failed && ($curlResult->getReturnCode() == 410)) {
$data = ['@context' => ActivityPub::CONTEXT, 'id' => $url, 'type' => 'Tombstone'];
+ } elseif (!$failed && !HTTPSignature::isValidContentType($curlResult->getContentType())) {
+ Logger::debug('Unexpected content type', ['content-type' => $curlResult->getContentType(), 'url' => $url]);
+ $failed = true;
}
} catch (\Exception $exception) {
Logger::notice('Error fetching url', ['url' => $url, 'exception' => $exception]);
}
if (empty($object) || !is_array($object)) {
- $element = explode(';', $curlResult->getContentType());
- if (!in_array($element[0], ['application/activity+json', 'application/ld+json', 'application/json'])) {
- Logger::debug('Unexpected content-type', ['url' => $url, 'content-type' => $curlResult->getContentType()]);
- return null;
- }
Logger::notice('Invalid JSON data', ['url' => $url, 'content-type' => $curlResult->getContentType(), 'body' => $body]);
return '';
}
return '';
}
+ if (!HTTPSignature::isValidContentType($curlResult->getContentType())) {
+ Logger::notice('Unexpected content type', ['content-type' => $curlResult->getContentType(), 'url' => $url]);
+ return '';
+ }
+
$ldobject = JsonLD::compact($object);
$signer = [];
return [];
}
+ if (!self::isValidContentType($curlResult->getContentType())) {
+ Logger::notice('Unexpected content type', ['content-type' => $curlResult->getContentType(), 'url' => $request]);
+ return [];
+ }
+
return $content;
}
+ /**
+ * Check if the provided content type is a valid LD JSON mime type
+ *
+ * @param string $contentType
+ * @return boolean
+ */
+ public static function isValidContentType(string $contentType): bool
+ {
+ return in_array(current(explode(';', $contentType)), ['application/activity+json', 'application/ld+json']);
+ }
+
/**
* Fetches raw data for a user
*