| @@ -6,6 +6,10 @@ class PreviewController < ApplicationController | |||||
| url = params[:url] | url = params[:url] | ||||
| return head :bad_request unless url.present? | return head :bad_request unless url.present? | ||||
| unless url.start_with?(/http(s)?:\/\//) | |||||
| url = 'http://' + url | |||||
| end | |||||
| html = URI.open(url, open_timeout: 5, read_timeout: 5).read | html = URI.open(url, open_timeout: 5, read_timeout: 5).read | ||||
| doc = Nokogiri::HTML.parse(html) | doc = Nokogiri::HTML.parse(html) | ||||
| title = doc.at('title')&.text&.strip | title = doc.at('title')&.text&.strip | ||||
| @@ -17,11 +21,16 @@ class PreviewController < ApplicationController | |||||
| def thumbnail | def thumbnail | ||||
| # TODO: 既知ドメインであれば指定のアドレスからサムネールを取得するやぅにする. | # TODO: 既知ドメインであれば指定のアドレスからサムネールを取得するやぅにする. | ||||
| return head :unauthorized unless current_user | return head :unauthorized unless current_user | ||||
| url = params[:url] | url = params[:url] | ||||
| return head :bad_request if url.blank? | return head :bad_request if url.blank? | ||||
| unless url.start_with?(/http(s)?:\/\//) | |||||
| url = 'http://' + url | |||||
| end | |||||
| path = Rails.root.join('tmp', "thumb_#{ SecureRandom.hex }.png") | path = Rails.root.join('tmp', "thumb_#{ SecureRandom.hex }.png") | ||||
| system("node #{ Rails.root }/lib/screenshot.js #{ Shellwords.escape(url) } #{ path }") | system("node #{ Rails.root }/lib/screenshot.js #{ Shellwords.escape(url) } #{ path }") | ||||