Fix IHTTPResult::getHeader()

- Now returns a string array, like expected
- Fix usages
- Fix dataset
This commit is contained in:
Philipp 2021-08-20 19:48:20 +02:00
parent 3c074ab315
commit 803c1d71de
No known key found for this signature in database
GPG key ID: 9A28B7D4FF5667BD
11 changed files with 67 additions and 58 deletions

View file

@ -75,23 +75,25 @@ class Images
/**
* Fetch image mimetype from the image data or guessing from the file name
*
* @param string $image_data Image data
* @param string $filename File name (for guessing the type via the extension)
* @param string $mime default mime type
* @param string $image_data Image data
* @param string $filename File name (for guessing the type via the extension)
* @param string[] $mimeTypes possible mime types
*
* @return string
* @throws \Exception
*/
public static function getMimeTypeByData(string $image_data, string $filename = '', string $mime = '')
public static function getMimeTypeByData(string $image_data, string $filename = '', array $mimeTypes = [])
{
if (substr($mime, 0, 6) == 'image/') {
Logger::info('Using default mime type', ['filename' => $filename, 'mime' => $mime]);
return $mime;
foreach ($mimeTypes as $mimeType) {
if (substr($mimeType, 0, 6) == 'image/') {
Logger::info('Using default mime type', ['filename' => $filename, 'mime' => $mimeTypes]);
return $mimeType;
}
}
$image = @getimagesizefromstring($image_data);
if (!empty($image['mime'])) {
Logger::info('Mime type detected via data', ['filename' => $filename, 'default' => $mime, 'mime' => $image['mime']]);
Logger::info('Mime type detected via data', ['filename' => $filename, 'default' => $mimeTypes, 'mime' => $image['mime']]);
return $image['mime'];
}

View file

@ -272,8 +272,10 @@ class ParseUrl
$charset = '';
// Look for a charset, first in headers
// Expected form: Content-Type: text/html; charset=ISO-8859-4
if (preg_match('/charset=([a-z0-9-_.\/]+)/i', $curlResult->getContentType(), $matches)) {
$charset = trim(trim(trim(array_pop($matches)), ';,'));
foreach ($curlResult->getContentType() as $type) {
if (preg_match('/charset=([a-z0-9-_.\/]+)/i', $type, $matches)) {
$charset = trim(trim(trim(array_pop($matches)), ';,'));
}
}
// Then in body that gets precedence