コンテンツ情報取得の実装をapi.phpから剥がした

This commit is contained in:
shibafu
2018-04-15 02:05:41 +09:00
parent 0f39b502e8
commit 7ca0acacb4
9 changed files with 190 additions and 66 deletions

View File

@@ -0,0 +1,24 @@
<?php
namespace App\MetadataResolver;
class MetadataResolver implements Resolver
{
public $rules = [
'~(((sp\.)?seiga\.nicovideo\.jp/seiga(/#!)?|nico\.ms))/im~' => NicoSeigaResolver::class,
'~nijie\.info/view\.php~' => NijieResolver::class,
'/.*/' => OGPResolver::class
];
public function resolve(string $url): Metadata
{
foreach ($this->rules as $pattern => $class) {
if (preg_match($pattern, $url) === 1) {
$resolver = new $class;
return $resolver->resolve($url);
}
}
throw new \UnexpectedValueException('URL not matched.');
}
}