From 33be0ac8efd1a3aef24aa2a55a54e03b03955d87 Mon Sep 17 00:00:00 2001 From: shibafu Date: Sat, 16 Feb 2019 00:06:51 +0900 Subject: [PATCH] =?UTF-8?q?CienResolver=E3=82=92=E8=BF=BD=E5=8A=A0=20(#95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/MetadataResolver/CienResolver.php | 29 +++++++++++++++++++++++ app/MetadataResolver/MetadataResolver.php | 1 + 2 files changed, 30 insertions(+) create mode 100644 app/MetadataResolver/CienResolver.php diff --git a/app/MetadataResolver/CienResolver.php b/app/MetadataResolver/CienResolver.php new file mode 100644 index 0000000..73f8c0e --- /dev/null +++ b/app/MetadataResolver/CienResolver.php @@ -0,0 +1,29 @@ +get($url); + if ($res->getStatusCode() === 200) { + $ogpResolver = new OGPResolver(); + $metadata = $ogpResolver->parse($res->getBody()); + + // 画像URLから有効期限の起点を拾う + parse_str(parse_url($metadata->image, PHP_URL_QUERY), $params); + if (empty($params['px-time'])) { + throw new \RuntimeException('Parameter "px-time" not found. Image=' . $metadata->image . ' Source=' . $url); + } + $metadata->expires_at = Carbon::createFromTimestamp($params['px-time'])->addHour(1); + + return $metadata; + } else { + throw new \RuntimeException("{$res->getStatusCode()}: $url"); + } + } +} diff --git a/app/MetadataResolver/MetadataResolver.php b/app/MetadataResolver/MetadataResolver.php index a00625b..b55da22 100644 --- a/app/MetadataResolver/MetadataResolver.php +++ b/app/MetadataResolver/MetadataResolver.php @@ -21,6 +21,7 @@ class MetadataResolver implements Resolver '~www\.patreon\.com/~' => PatreonResolver::class, '~www\.deviantart\.com/.*/art/.*~' => DeviantArtResolver::class, '~\.syosetu\.com/n\d+[a-z]{2,}~' => NarouResolver::class, + '~ci-en\.jp/creator/\d+/article/\d+~' => CienResolver::class, ]; public $mimeTypes = [