このコミットが含まれているのは:
@@ -4,18 +4,15 @@ module Preview
|
||||
|
||||
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
|
||||
return 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
|
||||
page = HttpFetcher.fetch(uri.to_s)
|
||||
metadata = HtmlMetadataExtractor.extract(page)
|
||||
raise GenerationFailed, 'サムネール画像が見つかりませんでした.' if metadata[:image_url].blank?
|
||||
|
||||
image || Screenshot.capture(uri.to_s)
|
||||
fetch_image(metadata[:image_url])
|
||||
end
|
||||
|
||||
def self.title(raw_url)
|
||||
@@ -25,11 +22,15 @@ module Preview
|
||||
|
||||
def self.fetch_image(url)
|
||||
response = HttpFetcher.fetch(url)
|
||||
return unless response.content_type.downcase.start_with?('image/')
|
||||
unless response.content_type.downcase.start_with?('image/')
|
||||
raise GenerationFailed, 'サムネール画像が見つかりませんでした.'
|
||||
end
|
||||
|
||||
response.body
|
||||
rescue HttpFetcher::FetchTimeout
|
||||
raise
|
||||
rescue HttpFetcher::FetchFailed
|
||||
nil
|
||||
raise GenerationFailed, 'サムネール画像を取得できませんでした.'
|
||||
end
|
||||
|
||||
private_class_method :fetch_image
|
||||
|
||||
新しい課題から参照
ユーザをブロックする