Revert "IHTTPResult::getContentType is now a string again"
This reverts commit 40b11442
	
	
This commit is contained in:
		
					parent
					
						
							
								88c95a352b
							
						
					
				
			
			
				commit
				
					
						40349bfdc4
					
				
			
		
					 9 changed files with 27 additions and 23 deletions
				
			
		| 
						 | 
				
			
			@ -427,7 +427,7 @@ class Photo
 | 
			
		|||
			$contType = $ret->getContentType();
 | 
			
		||||
		} else {
 | 
			
		||||
			$img_str = '';
 | 
			
		||||
			$contType = '';
 | 
			
		||||
			$contType = [];
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if ($quit_on_error && ($img_str == "")) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1008,7 +1008,7 @@ class User
 | 
			
		|||
				$contType = $curlResult->getContentType();
 | 
			
		||||
			} else {
 | 
			
		||||
				$img_str = '';
 | 
			
		||||
				$contType = '';
 | 
			
		||||
				$contType = [];
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			$type = Images::getMimeTypeByData($img_str, $photo, $contType);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,7 +37,7 @@ class CurlResult implements IHTTPResult
 | 
			
		|||
	private $returnCode;
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @var string the content type of the Curl call
 | 
			
		||||
	 * @var string[] the content type of the Curl call
 | 
			
		||||
	 */
 | 
			
		||||
	private $contentType;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -223,9 +223,9 @@ class CurlResult implements IHTTPResult
 | 
			
		|||
	private function checkInfo()
 | 
			
		||||
	{
 | 
			
		||||
		if (isset($this->info['content_type'])) {
 | 
			
		||||
			$this->contentType = $this->info['content_type'];
 | 
			
		||||
			$this->contentType = [$this->info['content_type']];
 | 
			
		||||
		} else {
 | 
			
		||||
			$this->contentType = '';
 | 
			
		||||
			$this->contentType = [];
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -88,7 +88,7 @@ class GuzzleResponse extends Response implements IHTTPResult, ResponseInterface
 | 
			
		|||
	/** {@inheritDoc} */
 | 
			
		||||
	public function getContentType()
 | 
			
		||||
	{
 | 
			
		||||
		return implode($this->getHeader('Content-Type'));
 | 
			
		||||
		return $this->getHeader('Content-Type');
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/** {@inheritDoc} */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,7 +19,7 @@ interface IHTTPResult
 | 
			
		|||
	/**
 | 
			
		||||
	 * Returns the Content Type
 | 
			
		||||
	 *
 | 
			
		||||
	 * @return string the Content Type
 | 
			
		||||
	 * @return string[] the Content Types
 | 
			
		||||
	 */
 | 
			
		||||
	public function getContentType();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -429,7 +429,7 @@ class Probe
 | 
			
		|||
		}
 | 
			
		||||
 | 
			
		||||
		// If it isn't a HTML file then exit
 | 
			
		||||
		if (($curlResult->getContentType() != '') && !strstr(strtolower($curlResult->getContentType()), 'html')) {
 | 
			
		||||
		if (!in_array('html', $curlResult->getContentType())) {
 | 
			
		||||
			return false;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 $mimeType   possible 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 $mimeType = '')
 | 
			
		||||
	public static function getMimeTypeByData(string $image_data, string $filename = '', array $mimeTypes = [])
 | 
			
		||||
	{
 | 
			
		||||
		if (substr($mimeType, 0, 6) == 'image/') {
 | 
			
		||||
			Logger::info('Using default mime type', ['filename' => $filename, 'mime' => $mimeType]);
 | 
			
		||||
			return $mimeType;
 | 
			
		||||
		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' => $mimeType, 'mime' => $image['mime']]);
 | 
			
		||||
			Logger::info('Mime type detected via data', ['filename' => $filename, 'default' => $mimeTypes, 'mime' => $image['mime']]);
 | 
			
		||||
			return $image['mime'];
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -166,7 +166,7 @@ class ParseUrl
 | 
			
		|||
		}
 | 
			
		||||
 | 
			
		||||
		// If it isn't a HTML file then exit
 | 
			
		||||
		if (($curlResult->getContentType() != '') && !strstr(strtolower($curlResult->getContentType()), 'html')) {
 | 
			
		||||
		if (!in_array('html', $curlResult->getContentType())) {
 | 
			
		||||
			return $siteinfo;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -198,8 +198,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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -68,7 +68,7 @@ class CurlResultTest extends TestCase
 | 
			
		|||
		$this->assertFalse($curlResult->isRedirectUrl());
 | 
			
		||||
		$this->assertSame($headerArray, $curlResult->getHeaders());
 | 
			
		||||
		$this->assertSame($body, $curlResult->getBody());
 | 
			
		||||
		$this->assertSame('text/html; charset=utf-8', $curlResult->getContentType());
 | 
			
		||||
		$this->assertSame(['text/html; charset=utf-8'], $curlResult->getContentType());
 | 
			
		||||
		$this->assertSame('https://test.local', $curlResult->getUrl());
 | 
			
		||||
		$this->assertSame('https://test.local', $curlResult->getRedirectUrl());
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -97,7 +97,7 @@ class CurlResultTest extends TestCase
 | 
			
		|||
		$this->assertTrue($curlResult->isRedirectUrl());
 | 
			
		||||
		$this->assertSame($headerArray, $curlResult->getHeaders());
 | 
			
		||||
		$this->assertSame($body, $curlResult->getBody());
 | 
			
		||||
		$this->assertSame('text/html; charset=utf-8', $curlResult->getContentType());
 | 
			
		||||
		$this->assertSame(['text/html; charset=utf-8'], $curlResult->getContentType());
 | 
			
		||||
		$this->assertSame('https://test.local/test/it', $curlResult->getUrl());
 | 
			
		||||
		$this->assertSame('https://test.other/test/it', $curlResult->getRedirectUrl());
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -124,7 +124,7 @@ class CurlResultTest extends TestCase
 | 
			
		|||
		$this->assertFalse($curlResult->isRedirectUrl());
 | 
			
		||||
		$this->assertSame($headerArray, $curlResult->getHeaders());
 | 
			
		||||
		$this->assertSame($body, $curlResult->getBody());
 | 
			
		||||
		$this->assertSame('text/html; charset=utf-8', $curlResult->getContentType());
 | 
			
		||||
		$this->assertSame(['text/html; charset=utf-8'], $curlResult->getContentType());
 | 
			
		||||
		$this->assertSame('https://test.local/test/it', $curlResult->getRedirectUrl());
 | 
			
		||||
		$this->assertSame('Tested error', $curlResult->getError());
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -152,7 +152,7 @@ class CurlResultTest extends TestCase
 | 
			
		|||
		$this->assertTrue($curlResult->isRedirectUrl());
 | 
			
		||||
		$this->assertSame($headerArray, $curlResult->getHeaders());
 | 
			
		||||
		$this->assertSame($body, $curlResult->getBody());
 | 
			
		||||
		$this->assertSame('text/html; charset=utf-8', $curlResult->getContentType());
 | 
			
		||||
		$this->assertSame(['text/html; charset=utf-8'], $curlResult->getContentType());
 | 
			
		||||
		$this->assertSame('https://test.local/test/it?key=value', $curlResult->getUrl());
 | 
			
		||||
		$this->assertSame('https://test.other/some/?key=value', $curlResult->getRedirectUrl());
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue