J. King
5 years ago
6 changed files with 67 additions and 12 deletions
@ -0,0 +1,22 @@ |
|||
<?php |
|||
/** @license MIT |
|||
* Copyright 2017 J. King, Dustin Wilson et al. |
|||
* See LICENSE and AUTHORS files for details */ |
|||
|
|||
declare(strict_types=1); |
|||
namespace JKingWeb\Arsse\Misc; |
|||
|
|||
use Psr\Http\Message\MessageInterface; |
|||
|
|||
class HTTP { |
|||
public static function matchType(MessageInterface $msg, string ...$type): bool { |
|||
$header = $msg->getHeaderLine("Content-Type") ?? ""; |
|||
foreach ($type as $t) { |
|||
$pattern = "/^".preg_quote(trim($t), "/")."($|;|,)/i"; |
|||
if (preg_match($pattern, $header)) { |
|||
return true; |
|||
} |
|||
} |
|||
return false; |
|||
} |
|||
} |
@ -0,0 +1,32 @@ |
|||
<?php |
|||
/** @license MIT |
|||
* Copyright 2017 J. King, Dustin Wilson et al. |
|||
* See LICENSE and AUTHORS files for details */ |
|||
|
|||
declare(strict_types=1); |
|||
namespace JKingWeb\Arsse\TestCase\Misc; |
|||
|
|||
use JKingWeb\Arsse\Misc\HTTP; |
|||
use Psr\Http\Message\ResponseInterface; |
|||
|
|||
/** @covers \JKingWeb\Arsse\Misc\HTTP */ |
|||
class TestHTTP extends \JKingWeb\Arsse\Test\AbstractTest { |
|||
/** @dataProvider provideMediaTypes */ |
|||
public function testMatchMediaType(string $header, array $types, bool $exp) { |
|||
$msg = (new \Zend\Diactoros\Request)->withHeader("Content-Type", $header); |
|||
$this->assertSame($exp, HTTP::matchType($msg, ...$types)); |
|||
$msg = (new \Zend\Diactoros\Response)->withHeader("Content-Type", $header); |
|||
$this->assertSame($exp, HTTP::matchType($msg, ...$types)); |
|||
} |
|||
|
|||
public function provideMediaTypes() { |
|||
return [ |
|||
["application/json", ["application/json"], true], |
|||
["APPLICATION/JSON", ["application/json"], true], |
|||
["text/JSON", ["application/json", "text/json"], true], |
|||
["text/json; charset=utf-8", ["application/json", "text/json"], true], |
|||
["", ["application/json"], false], |
|||
["", ["application/json", ""], true], |
|||
]; |
|||
} |
|||
} |
Loading…
Reference in new issue