From 895e9f4b151e9b2de95061fcb01578cb846d3562 Mon Sep 17 00:00:00 2001 From: shibafu Date: Wed, 23 Jan 2019 00:04:10 +0900 Subject: [PATCH] =?UTF-8?q?OGP=E3=81=8B=E3=82=89=E3=82=BF=E3=82=A4?= =?UTF-8?q?=E3=83=88=E3=83=AB=E6=83=85=E5=A0=B1=E3=81=8C=E5=8F=96=E3=82=8C?= =?UTF-8?q?=E3=81=AA=E3=81=84=E5=A0=B4=E5=90=88=E3=81=AFtitle=E3=82=BF?= =?UTF-8?q?=E3=82=B0=E3=81=8B=E3=82=89=E5=8F=96=E5=BE=97=E3=82=92=E8=A9=A6?= =?UTF-8?q?=E3=81=BF=E3=82=8B=20(#65)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refs #62 --- app/MetadataResolver/OGPResolver.php | 6 ++++++ tests/Unit/MetadataResolver/OGPResolverTest.php | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/app/MetadataResolver/OGPResolver.php b/app/MetadataResolver/OGPResolver.php index 72bb551..5afe83c 100644 --- a/app/MetadataResolver/OGPResolver.php +++ b/app/MetadataResolver/OGPResolver.php @@ -24,6 +24,12 @@ class OGPResolver implements Resolver $metadata = new Metadata(); $metadata->title = $this->findContent($xpath, '//meta[@*="og:title"]', '//meta[@*="twitter:title"]'); + if (empty($metadata->title)) { + $nodes = $xpath->query('//title'); + if ($nodes->length !== 0) { + $metadata->title = $nodes->item(0)->textContent; + } + } $metadata->description = $this->findContent($xpath, '//meta[@*="og:description"]', '//meta[@*="twitter:description"]'); $metadata->image = $this->findContent($xpath, '//meta[@*="og:image"]', '//meta[@*="twitter:image"]'); diff --git a/tests/Unit/MetadataResolver/OGPResolverTest.php b/tests/Unit/MetadataResolver/OGPResolverTest.php index a8c0ab0..fd9375f 100644 --- a/tests/Unit/MetadataResolver/OGPResolverTest.php +++ b/tests/Unit/MetadataResolver/OGPResolverTest.php @@ -25,4 +25,14 @@ class OGPResolverTest extends TestCase $this->assertEquals('The Open Graph protocol enables any web page to become a rich object in a social graph.', $metadata->description); $this->assertEquals('http://ogp.me/logo.png', $metadata->image); } + + public function testResolveTitleOnly() + { + $resolver = new OGPResolver(); + + $metadata = $resolver->resolve('http://example.com'); + $this->assertEquals('Example Domain', $metadata->title); + $this->assertEmpty($metadata->description); + $this->assertEmpty($metadata->image); + } }