<?php namespace App\MetadataResolver; use GuzzleHttp\Client; class DLsiteResolver implements Resolver { /** * @var Client */ private $client; /** * @var OGPResolver */ private $ogpResolver; public function __construct(Client $client, OGPResolver $ogpResolver) { $this->client = $client; $this->ogpResolver = $ogpResolver; } public function resolve(string $url): Metadata { $res = $this->client->get($url); if ($res->getStatusCode() === 200) { $metadata = $this->ogpResolver->parse($res->getBody()); $metadata->image = str_replace('img_sam.jpg', 'img_main.jpg', $metadata->image); return $metadata; } else { throw new \RuntimeException("{$res->getStatusCode()}: $url"); } } }