8 Commits

Author SHA1 Message Date
shibafu
0f435c09b3 Merge pull request #479 from shikorism/feature/463-update-fixture
Fixture updater
2020-10-24 11:57:12 +09:00
shibafu
16071f7cff Merge pull request #531 from shikorism/fix/robots-ignore-non-plain-response
robots.txt取得時、text/plain以外の応答は失敗扱いにする
2020-10-21 20:47:19 +09:00
shibafu
a22f41766a remove unused use 2020-10-19 09:18:24 +09:00
shibafu
552ff421dd file_get_contentsを直接使うのをやめよう運動 2020-10-19 09:17:49 +09:00
shibafu
f8952474b5 MetadataResolverのFixtureを更新する仕組みを追加 2020-10-19 09:17:49 +09:00
shibafu
3fd62dcd6f robots.txt取得時、text/plain以外の応答は失敗扱いにする 2020-10-17 16:54:00 +09:00
shibafu
4360144d6f Merge pull request #530 from shikorism/fix/cien-jwt
Ci-en: JWTから有効期限を取得する
2020-10-17 16:20:18 +09:00
shibafu
e74a9675ce Ci-en: JWTから有効期限を取得する 2020-10-17 14:01:28 +09:00
22 changed files with 328 additions and 199 deletions

View File

@@ -9,6 +9,9 @@ LOG_CHANNEL=stack
# テストにモックを使用するか falseの場合は実際のHTML等を取得してテストする # テストにモックを使用するか falseの場合は実際のHTML等を取得してテストする
TEST_USE_HTTP_MOCK=true TEST_USE_HTTP_MOCK=true
# テスト用のスナップショットを更新する場合はtrueにする (TEST_USE_HTTP_MOCKと重複させないよう注意)
TEST_UPDATE_SNAPSHOT=false
DB_CONNECTION=pgsql DB_CONNECTION=pgsql
DB_HOST=db DB_HOST=db
DB_PORT=5432 DB_PORT=5432

View File

@@ -27,12 +27,18 @@ class CienResolver extends MetadataResolver
$res = $this->client->get($url); $res = $this->client->get($url);
$metadata = $this->ogpResolver->parse((string) $res->getBody()); $metadata = $this->ogpResolver->parse((string) $res->getBody());
// 画像URLから有効期限の起点を拾う // 画像URLのJWTから有効期限を拾う
parse_str(parse_url($metadata->image, PHP_URL_QUERY), $params); parse_str(parse_url($metadata->image, PHP_URL_QUERY), $params);
if (empty($params['px-time'])) { if (empty($params['jwt'])) {
throw new \RuntimeException('Parameter "px-time" not found. Image=' . $metadata->image . ' Source=' . $url); throw new \RuntimeException('Parameter "jwt" not found. Image=' . $metadata->image . ' Source=' . $url);
} }
$metadata->expires_at = Carbon::createFromTimestamp($params['px-time'])->addHour(1); $parts = explode('.', $params['jwt']);
if (count($parts) !== 3) {
throw new \RuntimeException('Invalid jwt. Image=' . $metadata->image . ' Source=' . $url);
}
$payload = json_decode(base64_decode(str_replace(['-', '_'], ['+', '/'], $parts[1])), true);
$metadata->expires_at = Carbon::createFromTimestamp($payload['exp']);
return $metadata; return $metadata;
} }

View File

@@ -162,6 +162,11 @@ class MetadataResolveService
$client = app(Client::class); $client = app(Client::class);
try { try {
$res = $client->get($robotsUrl); $res = $client->get($robotsUrl);
if (stripos($res->getHeaderLine('Content-Type'), 'text/plain') !== 0) {
Log::error('robots.txtの取得に失敗: 不適切なContent-Type (' . $res->getHeaderLine('Content-Type') . ')');
return null;
}
return (string) $res->getBody(); return (string) $res->getBody();
} catch (\Exception $e) { } catch (\Exception $e) {

View File

@@ -20,28 +20,28 @@ class CienResolverTest extends TestCase
public function test() public function test()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Cien/test.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Cien/test.html');
$this->createResolver(CienResolver::class, $responseText); $this->createResolver(CienResolver::class, $responseText);
$metadata = $this->resolver->resolve('https://ci-en.dlsite.com/creator/2462/article/87502'); $metadata = $this->resolver->resolve('https://ci-en.dlsite.com/creator/2462/article/87502');
$this->assertSame('進捗とボツ立ち絵', $metadata->title); $this->assertSame('進捗とボツ立ち絵 - ねんない5 - Ci-enシエン', $metadata->title);
$this->assertSame('ドット製D ACTを製作しています。' . PHP_EOL . '恐ろしい存在に襲われる絶望感や、被虐的な官能がテーマです。', $metadata->description); $this->assertSame('今日のサムネイルはストアページに掲載する予定のキャラクター紹介画像です。 ドットでない解像度の高いイラストは時間も体力も精神力もかかるので、こういうのを行うタスクを開発終盤に残さないでよかったと本気……', $metadata->description);
$this->assertStringStartsWith('https://media.ci-en.jp/private/attachment/creator/00002462/a7afd3b02a6d1caa6afe6a3bf5550fb6a42aefba686f17a0a2f63c97fd6867ab/image-800.jpg?px-time=', $metadata->image); $this->assertStringStartsWith('https://media.ci-en.jp/private/attachment/creator/00002462/a7afd3b02a6d1caa6afe6a3bf5550fb6a42aefba686f17a0a2f63c97fd6867ab/image-800.jpg?jwt=', $metadata->image);
if ($this->shouldUseMock()) { if ($this->shouldUseMock()) {
$this->assertSame('https://media.ci-en.jp/private/attachment/creator/00002462/a7afd3b02a6d1caa6afe6a3bf5550fb6a42aefba686f17a0a2f63c97fd6867ab/image-800.jpg?px-time=1568231879&px-hash=70c57e9a73d5afb4ac5363d1f37a851af8e0cb1f', $metadata->image); $this->assertSame('https://media.ci-en.jp/private/attachment/creator/00002462/a7afd3b02a6d1caa6afe6a3bf5550fb6a42aefba686f17a0a2f63c97fd6867ab/image-800.jpg?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJrZXkiOiJqd3RhdXRoX3NlY18yMDIwT2N0IiwiaXNzIjoiaHR0cHM6XC9cL2NpLWVuLmRsc2l0ZS5jb21cLyIsInN1YiI6IjAwMDAwMDAwMDAwIiwiYXVkIjoiYTdhZmQzYjAyYTZkMWNhYTZhZmU2YTNiZjU1NTBmYjZhNDJhZWZiYTY4NmYxN2EwYTJmNjNjOTdmZDY4NjdhYiIsImV4cCI6MTYwMjk5NTIyMX0.bXUG2T6nXl4hdvsvt1wkIMvbbBdsKk-xbwB6SaxARZA', $metadata->image);
$this->assertSame(1568235479, $metadata->expires_at->timestamp); $this->assertSame(1602995221, $metadata->expires_at->timestamp);
$this->assertSame('https://ci-en.dlsite.com/creator/2462/article/87502', (string) $this->handler->getLastRequest()->getUri()); $this->assertSame('https://ci-en.dlsite.com/creator/2462/article/87502', (string) $this->handler->getLastRequest()->getUri());
} }
} }
public function testWithNoTimestamp() public function testWithNoTimestamp()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Cien/testWithNoTimestamp.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Cien/testWithNoTimestamp.html');
$this->createResolver(CienResolver::class, $responseText); $this->createResolver(CienResolver::class, $responseText);
$this->expectException(\RuntimeException::class); $this->expectException(\RuntimeException::class);
$this->expectExceptionMessage('Parameter "px-time" not found. Image=https://ci-en.dlsite.com/assets/img/common/logo_Ci-en_R18.svg Source=https://ci-en.dlsite.com/'); $this->expectExceptionMessage('Parameter "jwt" not found. Image=https://ci-en.dlsite.com/assets/img/common/logo_Ci-en_R18.svg Source=https://ci-en.dlsite.com/');
$this->resolver->resolve('https://ci-en.dlsite.com/'); $this->resolver->resolve('https://ci-en.dlsite.com/');
} }

View File

@@ -8,6 +8,8 @@ use GuzzleHttp\Handler\MockHandler;
use GuzzleHttp\HandlerStack; use GuzzleHttp\HandlerStack;
use GuzzleHttp\Psr7\Response; use GuzzleHttp\Psr7\Response;
use Monolog\Handler\AbstractHandler; use Monolog\Handler\AbstractHandler;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
trait CreateMockedResolver trait CreateMockedResolver
{ {
@@ -21,6 +23,18 @@ trait CreateMockedResolver
*/ */
protected $handler; protected $handler;
/**
* @var string
*/
protected $snapshotFilename;
protected function fetchSnapshot(string $filename): string
{
$this->snapshotFilename = $filename;
return file_get_contents($filename);
}
/** /**
* @param string $resolverClass * @param string $resolverClass
* @param string $responseText * @param string $responseText
@@ -30,19 +44,27 @@ trait CreateMockedResolver
*/ */
protected function createResolver(string $resolverClass, string $responseText, array $headers = [], int $status = 200) protected function createResolver(string $resolverClass, string $responseText, array $headers = [], int $status = 200)
{ {
if (!$this->shouldUseMock()) { if (!$this->shouldUseMock() && !$this->shouldUpdateSnapshot()) {
$this->resolver = app()->make($resolverClass); $this->resolver = app()->make($resolverClass);
return $this->resolver; return $this->resolver;
} }
$headers += [ if ($this->shouldUseMock()) {
'content-type' => 'text/html', $headers += [
]; 'content-type' => 'text/html',
];
$mockResponse = new Response($status, $headers, $responseText);
$this->handler = new MockHandler([$mockResponse]);
}
$stack = HandlerStack::create($this->handler);
$client = new Client(['handler' => $stack]);
if ($this->shouldUpdateSnapshot()) {
$stack->push($this->makeUpdateSnapshotMiddleware());
}
$mockResponse = new Response($status, $headers, $responseText);
$this->handler = new MockHandler([$mockResponse]);
$client = new Client(['handler' => HandlerStack::create($this->handler)]);
$this->resolver = app()->make($resolverClass, ['client' => $client]); $this->resolver = app()->make($resolverClass, ['client' => $client]);
return $this->resolver; return $this->resolver;
@@ -52,4 +74,27 @@ trait CreateMockedResolver
{ {
return (bool) env('TEST_USE_HTTP_MOCK', true); return (bool) env('TEST_USE_HTTP_MOCK', true);
} }
protected function shouldUpdateSnapshot(): bool
{
return (bool) env('TEST_UPDATE_SNAPSHOT', false);
}
protected function makeUpdateSnapshotMiddleware(): callable
{
return function (callable $next) {
return function (RequestInterface $request, array $options) use ($next) {
return $next($request, $options)->then(function (ResponseInterface $response) {
if (empty($this->snapshotFilename)) {
throw new \RuntimeException('スナップショットのファイル名が分かりません。file_get_contents()を使っている場合、fetchSnapshot()に置き換えてください。');
}
file_put_contents($this->snapshotFilename, (string) $response->getBody());
fwrite(STDERR, "Snapshot Updated: {$this->snapshotFilename}\n");
return $response;
});
};
};
}
} }

View File

@@ -20,7 +20,7 @@ class DLsiteResolverTest extends TestCase
public function testHome() public function testHome()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testHome.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DLsite/testHome.html');
$this->createResolver(DLsiteResolver::class, $responseText); $this->createResolver(DLsiteResolver::class, $responseText);
@@ -36,7 +36,7 @@ class DLsiteResolverTest extends TestCase
public function testSoft() public function testSoft()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testSoft.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DLsite/testSoft.html');
$this->createResolver(DLsiteResolver::class, $responseText); $this->createResolver(DLsiteResolver::class, $responseText);
@@ -52,7 +52,7 @@ class DLsiteResolverTest extends TestCase
public function testComic() public function testComic()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testComic.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DLsite/testComic.html');
$this->createResolver(DLsiteResolver::class, $responseText); $this->createResolver(DLsiteResolver::class, $responseText);
@@ -68,7 +68,7 @@ class DLsiteResolverTest extends TestCase
public function testManiax() public function testManiax()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testManiax.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DLsite/testManiax.html');
$this->createResolver(DLsiteResolver::class, $responseText); $this->createResolver(DLsiteResolver::class, $responseText);
@@ -84,7 +84,7 @@ class DLsiteResolverTest extends TestCase
public function testPro() public function testPro()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testPro.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DLsite/testPro.html');
$this->createResolver(DLsiteResolver::class, $responseText); $this->createResolver(DLsiteResolver::class, $responseText);
@@ -100,7 +100,7 @@ class DLsiteResolverTest extends TestCase
public function testBooks() public function testBooks()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testBooks.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DLsite/testBooks.html');
$this->createResolver(DLsiteResolver::class, $responseText); $this->createResolver(DLsiteResolver::class, $responseText);
@@ -116,7 +116,7 @@ class DLsiteResolverTest extends TestCase
public function testGirls() public function testGirls()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testGirls.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DLsite/testGirls.html');
$this->createResolver(DLsiteResolver::class, $responseText); $this->createResolver(DLsiteResolver::class, $responseText);
@@ -132,7 +132,7 @@ class DLsiteResolverTest extends TestCase
public function testGirlsPro() public function testGirlsPro()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testGirlsPro.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DLsite/testGirlsPro.html');
$this->createResolver(DLsiteResolver::class, $responseText); $this->createResolver(DLsiteResolver::class, $responseText);
@@ -148,7 +148,7 @@ class DLsiteResolverTest extends TestCase
public function testBL() public function testBL()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testBL.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DLsite/testBL.html');
$this->createResolver(DLsiteResolver::class, $responseText); $this->createResolver(DLsiteResolver::class, $responseText);
@@ -164,7 +164,7 @@ class DLsiteResolverTest extends TestCase
public function testEng() public function testEng()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testEng.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DLsite/testEng.html');
$this->createResolver(DLsiteResolver::class, $responseText); $this->createResolver(DLsiteResolver::class, $responseText);
@@ -180,7 +180,7 @@ class DLsiteResolverTest extends TestCase
public function testEcchiEng() public function testEcchiEng()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testEcchiEng.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DLsite/testEcchiEng.html');
$this->createResolver(DLsiteResolver::class, $responseText); $this->createResolver(DLsiteResolver::class, $responseText);
@@ -196,7 +196,7 @@ class DLsiteResolverTest extends TestCase
public function testSPLink() public function testSPLink()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testHome.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DLsite/testHome.html');
// SP版touchのURLのテストだがリゾルバ側でURLから-touchを削除してPC版を取得するので、PC版の内容を使用する // SP版touchのURLのテストだがリゾルバ側でURLから-touchを削除してPC版を取得するので、PC版の内容を使用する
$this->createResolver(DLsiteResolver::class, $responseText); $this->createResolver(DLsiteResolver::class, $responseText);
@@ -213,7 +213,7 @@ class DLsiteResolverTest extends TestCase
public function testShortLink() public function testShortLink()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testHome.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DLsite/testHome.html');
$this->createResolver(DLsiteResolver::class, $responseText); $this->createResolver(DLsiteResolver::class, $responseText);
@@ -229,7 +229,7 @@ class DLsiteResolverTest extends TestCase
public function testOldAffiliateLink() public function testOldAffiliateLink()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testHome.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DLsite/testHome.html');
$this->createResolver(DLsiteResolver::class, $responseText); $this->createResolver(DLsiteResolver::class, $responseText);
@@ -245,7 +245,7 @@ class DLsiteResolverTest extends TestCase
public function testSnsAffiliateLink() public function testSnsAffiliateLink()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testHome.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DLsite/testHome.html');
$this->createResolver(DLsiteResolver::class, $responseText); $this->createResolver(DLsiteResolver::class, $responseText);
@@ -261,7 +261,7 @@ class DLsiteResolverTest extends TestCase
public function testAffiliateLink() public function testAffiliateLink()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testHome.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DLsite/testHome.html');
$this->createResolver(DLsiteResolver::class, $responseText); $this->createResolver(DLsiteResolver::class, $responseText);
@@ -277,7 +277,7 @@ class DLsiteResolverTest extends TestCase
public function testAffiliateUrl() public function testAffiliateUrl()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testHome.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DLsite/testHome.html');
$this->createResolver(DLsiteResolver::class, $responseText); $this->createResolver(DLsiteResolver::class, $responseText);
@@ -303,7 +303,7 @@ class DLsiteResolverTest extends TestCase
public function testHTMLdescription() public function testHTMLdescription()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DLsite/testHTMLdescription.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DLsite/testHTMLdescription.html');
$this->createResolver(DLsiteResolver::class, $responseText); $this->createResolver(DLsiteResolver::class, $responseText);

View File

@@ -20,7 +20,7 @@ class DeviantArtResolverTest extends TestCase
public function testMature() public function testMature()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/DeviantArt/mature.json'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/DeviantArt/mature.json');
$this->createResolver(DeviantArtResolver::class, $responseText); $this->createResolver(DeviantArtResolver::class, $responseText);

View File

@@ -20,7 +20,7 @@ class FC2ContentsResolverTest extends TestCase
public function testAdult() public function testAdult()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/FC2Contents/adult.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/FC2Contents/adult.html');
$this->createResolver(FC2ContentsResolver::class, $responseText); $this->createResolver(FC2ContentsResolver::class, $responseText);
@@ -35,7 +35,7 @@ class FC2ContentsResolverTest extends TestCase
public function testGeneral() public function testGeneral()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/FC2Contents/general.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/FC2Contents/general.html');
$this->createResolver(FC2ContentsResolver::class, $responseText); $this->createResolver(FC2ContentsResolver::class, $responseText);

View File

@@ -20,7 +20,7 @@ class FantiaResolverTest extends TestCase
public function test() public function test()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Fantia/test.json'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Fantia/test.json');
$this->createResolver(FantiaResolver::class, $responseText); $this->createResolver(FantiaResolver::class, $responseText);

View File

@@ -23,7 +23,7 @@ class FanzaResolverTest extends TestCase
*/ */
public function test($filename, $url, $title, $description, $image, $tags) public function test($filename, $url, $title, $description, $image, $tags)
{ {
$responseText = file_get_contents(__DIR__ . "/../../fixture/Fanza/{$filename}"); $responseText = $this->fetchSnapshot(__DIR__ . "/../../fixture/Fanza/{$filename}");
$this->createResolver(FanzaResolver::class, $responseText); $this->createResolver(FanzaResolver::class, $responseText);

View File

@@ -20,7 +20,7 @@ class HentaiFoundryResolverTest extends TestCase
public function test() public function test()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/HentaiFoundry/illust.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/HentaiFoundry/illust.html');
$this->createResolver(HentaiFoundryResolver::class, $responseText); $this->createResolver(HentaiFoundryResolver::class, $responseText);

View File

@@ -20,7 +20,7 @@ class IwaraResolverTest extends TestCase
public function testVideo() public function testVideo()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Iwara/video.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Iwara/video.html');
$this->createResolver(IwaraResolver::class, $responseText); $this->createResolver(IwaraResolver::class, $responseText);
@@ -37,7 +37,7 @@ class IwaraResolverTest extends TestCase
public function testYouTube() public function testYouTube()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Iwara/youtube.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Iwara/youtube.html');
$this->createResolver(IwaraResolver::class, $responseText); $this->createResolver(IwaraResolver::class, $responseText);
@@ -54,7 +54,7 @@ class IwaraResolverTest extends TestCase
public function testImages() public function testImages()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Iwara/images.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Iwara/images.html');
$this->createResolver(IwaraResolver::class, $responseText); $this->createResolver(IwaraResolver::class, $responseText);

View File

@@ -20,7 +20,7 @@ class Kb10uyShortStoryServerResolverTest extends TestCase
public function testNormalPost() public function testNormalPost()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Kb10uyShortStoryServer/tomone.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Kb10uyShortStoryServer/tomone.html');
$this->createResolver(Kb10uyShortStoryServerResolver::class, $responseText); $this->createResolver(Kb10uyShortStoryServerResolver::class, $responseText);

View File

@@ -20,7 +20,7 @@ class KomifloResolverTest extends TestCase
public function testComic() public function testComic()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Komiflo/comic.json'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Komiflo/comic.json');
$this->createResolver(KomifloResolver::class, $responseText); $this->createResolver(KomifloResolver::class, $responseText);
@@ -36,7 +36,7 @@ class KomifloResolverTest extends TestCase
public function testComicWithNoParents() public function testComicWithNoParents()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Komiflo/comicWithNoParents.json'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Komiflo/comicWithNoParents.json');
$this->createResolver(KomifloResolver::class, $responseText); $this->createResolver(KomifloResolver::class, $responseText);

View File

@@ -21,7 +21,7 @@ class NicoSeigaResolverTest extends TestCase
public function testSeiga() public function testSeiga()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/NicoSeiga/seiga.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/NicoSeiga/seiga.html');
$this->createResolver(NicoSeigaResolver::class, $responseText); $this->createResolver(NicoSeigaResolver::class, $responseText);
@@ -37,7 +37,7 @@ class NicoSeigaResolverTest extends TestCase
public function testShunga() public function testShunga()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/NicoSeiga/shunga.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/NicoSeiga/shunga.html');
$this->createResolver(NicoSeigaResolver::class, $responseText); $this->createResolver(NicoSeigaResolver::class, $responseText);

View File

@@ -20,7 +20,7 @@ class NijieResolverTest extends TestCase
public function testStandardPicture() public function testStandardPicture()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testStandardPictureResponse.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Nijie/testStandardPictureResponse.html');
$this->createResolver(NijieResolver::class, $responseText); $this->createResolver(NijieResolver::class, $responseText);
@@ -36,7 +36,7 @@ class NijieResolverTest extends TestCase
public function testMultiplePicture() public function testMultiplePicture()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testMultiplePictureResponse.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Nijie/testMultiplePictureResponse.html');
$this->createResolver(NijieResolver::class, $responseText); $this->createResolver(NijieResolver::class, $responseText);
@@ -52,7 +52,7 @@ class NijieResolverTest extends TestCase
public function testAnimationGif() public function testAnimationGif()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testAnimationGifResponse.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Nijie/testAnimationGifResponse.html');
$this->createResolver(NijieResolver::class, $responseText); $this->createResolver(NijieResolver::class, $responseText);
@@ -68,7 +68,7 @@ class NijieResolverTest extends TestCase
public function testMp4Movie() public function testMp4Movie()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testMp4MovieResponse.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Nijie/testMp4MovieResponse.html');
$this->createResolver(NijieResolver::class, $responseText); $this->createResolver(NijieResolver::class, $responseText);
@@ -84,7 +84,7 @@ class NijieResolverTest extends TestCase
public function testViewPopup() public function testViewPopup()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testStandardPictureResponse.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Nijie/testStandardPictureResponse.html');
$this->createResolver(NijieResolver::class, $responseText); $this->createResolver(NijieResolver::class, $responseText);
@@ -100,7 +100,7 @@ class NijieResolverTest extends TestCase
public function testSp() public function testSp()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testStandardPictureResponse.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Nijie/testStandardPictureResponse.html');
$this->createResolver(NijieResolver::class, $responseText); $this->createResolver(NijieResolver::class, $responseText);
@@ -116,7 +116,7 @@ class NijieResolverTest extends TestCase
public function testSpViewPopup() public function testSpViewPopup()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testStandardPictureResponse.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Nijie/testStandardPictureResponse.html');
$this->createResolver(NijieResolver::class, $responseText); $this->createResolver(NijieResolver::class, $responseText);
@@ -132,7 +132,7 @@ class NijieResolverTest extends TestCase
public function testHasHtmlInAuthorProfile() public function testHasHtmlInAuthorProfile()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Nijie/testHasHtmlInAuthorProfileResponse.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Nijie/testHasHtmlInAuthorProfileResponse.html');
$this->createResolver(NijieResolver::class, $responseText); $this->createResolver(NijieResolver::class, $responseText);

View File

@@ -20,7 +20,7 @@ class PixivResolverTest extends TestCase
public function testIllust() public function testIllust()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Pixiv/illust.json'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Pixiv/illust.json');
$this->createResolver(PixivResolver::class, $responseText); $this->createResolver(PixivResolver::class, $responseText);
@@ -36,7 +36,7 @@ class PixivResolverTest extends TestCase
public function testIllustMultiPages() public function testIllustMultiPages()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Pixiv/illustMultiPages.json'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Pixiv/illustMultiPages.json');
$this->createResolver(PixivResolver::class, $responseText); $this->createResolver(PixivResolver::class, $responseText);
@@ -52,7 +52,7 @@ class PixivResolverTest extends TestCase
public function testManga() public function testManga()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Pixiv/manga.json'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Pixiv/manga.json');
$this->createResolver(PixivResolver::class, $responseText); $this->createResolver(PixivResolver::class, $responseText);
@@ -68,7 +68,7 @@ class PixivResolverTest extends TestCase
public function testArtworkUrl() public function testArtworkUrl()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Pixiv/illust.json'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Pixiv/illust.json');
$this->createResolver(PixivResolver::class, $responseText); $this->createResolver(PixivResolver::class, $responseText);
@@ -84,7 +84,7 @@ class PixivResolverTest extends TestCase
public function testArtworkUrlEn() public function testArtworkUrlEn()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Pixiv/illust.json'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Pixiv/illust.json');
$this->createResolver(PixivResolver::class, $responseText); $this->createResolver(PixivResolver::class, $responseText);

View File

@@ -20,7 +20,7 @@ class PlurkResolverTest extends TestCase
public function test() public function test()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Plurk/test.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Plurk/test.html');
$this->createResolver(PlurkResolver::class, $responseText); $this->createResolver(PlurkResolver::class, $responseText);

View File

@@ -20,7 +20,7 @@ class SteamResolverTest extends TestCase
public function test() public function test()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Steam/test.json'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Steam/test.json');
$this->createResolver(SteamResolver::class, $responseText); $this->createResolver(SteamResolver::class, $responseText);
@@ -32,7 +32,7 @@ class SteamResolverTest extends TestCase
public function testR18() public function testR18()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Steam/testR18.json'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Steam/testR18.json');
$this->createResolver(SteamResolver::class, $responseText); $this->createResolver(SteamResolver::class, $responseText);
@@ -46,7 +46,7 @@ class SteamResolverTest extends TestCase
{ {
$this->expectException(\RuntimeException::class); $this->expectException(\RuntimeException::class);
$responseText = file_get_contents(__DIR__ . '/../../fixture/Steam/testNotFound.json'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Steam/testNotFound.json');
$this->createResolver(SteamResolver::class, $responseText); $this->createResolver(SteamResolver::class, $responseText);

View File

@@ -20,7 +20,7 @@ class ToranoanaResolverTest extends TestCase
public function testTora() public function testTora()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Toranoana/testTora.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Toranoana/testTora.html');
$this->createResolver(ToranoanaResolver::class, $responseText); $this->createResolver(ToranoanaResolver::class, $responseText);
@@ -35,7 +35,7 @@ class ToranoanaResolverTest extends TestCase
public function testToraR() public function testToraR()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Toranoana/testToraR.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Toranoana/testToraR.html');
$this->createResolver(ToranoanaResolver::class, $responseText); $this->createResolver(ToranoanaResolver::class, $responseText);
@@ -50,7 +50,7 @@ class ToranoanaResolverTest extends TestCase
public function testToraD() public function testToraD()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Toranoana/testToraD.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Toranoana/testToraD.html');
$this->createResolver(ToranoanaResolver::class, $responseText); $this->createResolver(ToranoanaResolver::class, $responseText);
@@ -65,7 +65,7 @@ class ToranoanaResolverTest extends TestCase
public function testToraRD() public function testToraRD()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Toranoana/testToraRD.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Toranoana/testToraRD.html');
$this->createResolver(ToranoanaResolver::class, $responseText); $this->createResolver(ToranoanaResolver::class, $responseText);
@@ -80,7 +80,7 @@ class ToranoanaResolverTest extends TestCase
public function testJoshi() public function testJoshi()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Toranoana/testJoshi.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Toranoana/testJoshi.html');
$this->createResolver(ToranoanaResolver::class, $responseText); $this->createResolver(ToranoanaResolver::class, $responseText);
@@ -95,7 +95,7 @@ class ToranoanaResolverTest extends TestCase
public function testJoshiR() public function testJoshiR()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Toranoana/testJoshiR.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Toranoana/testJoshiR.html');
$this->createResolver(ToranoanaResolver::class, $responseText); $this->createResolver(ToranoanaResolver::class, $responseText);
@@ -110,7 +110,7 @@ class ToranoanaResolverTest extends TestCase
public function testJoshiD() public function testJoshiD()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Toranoana/testJoshiD.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Toranoana/testJoshiD.html');
$this->createResolver(ToranoanaResolver::class, $responseText); $this->createResolver(ToranoanaResolver::class, $responseText);
@@ -125,7 +125,7 @@ class ToranoanaResolverTest extends TestCase
public function testJoshiRD() public function testJoshiRD()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Toranoana/testJoshiRD.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Toranoana/testJoshiRD.html');
$this->createResolver(ToranoanaResolver::class, $responseText); $this->createResolver(ToranoanaResolver::class, $responseText);

View File

@@ -20,7 +20,7 @@ class XtubeResolverTest extends TestCase
public function test() public function test()
{ {
$responseText = file_get_contents(__DIR__ . '/../../fixture/Xtube/video.html'); $responseText = $this->fetchSnapshot(__DIR__ . '/../../fixture/Xtube/video.html');
$this->createResolver(XtubeResolver::class, $responseText); $this->createResolver(XtubeResolver::class, $responseText);

File diff suppressed because one or more lines are too long