このコミットが含まれているのは:
2026-07-09 23:11:31 +09:00
コミット b19c24cb8e
8個のファイルの変更366行の追加46行の削除
+37
ファイルの表示
@@ -0,0 +1,37 @@
module Preview
class ThumbnailFetcher
class GenerationFailed < StandardError; end
def self.fetch(raw_url)
uri, = UrlSafety.validate(raw_url)
page = nil
known_url = KnownSiteExtractor.thumbnail_url(uri)
image = fetch_image(known_url) if known_url
unless image
page = HttpFetcher.fetch(uri.to_s)
metadata = HtmlMetadataExtractor.extract(page)
image = fetch_image(metadata[:image_url]) if metadata[:image_url]
end
image || Screenshot.capture(uri.to_s)
end
def self.title(raw_url)
uri, = UrlSafety.validate(raw_url)
HtmlMetadataExtractor.extract(HttpFetcher.fetch(uri.to_s))[:title]
end
def self.fetch_image(url)
response = HttpFetcher.fetch(url)
return unless response.content_type.downcase.start_with?('image/')
response.body
rescue HttpFetcher::FetchFailed
nil
end
private_class_method :fetch_image
end
end