Module: Rabbit::Parser::Ext::Image::Private
- Defined in:
- lib/rabbit/parser/ext/image.rb
Constant Summary collapse
- ALLOWED_IMG_URL_SCHEME =
["http", "https", "file"]
Class Method Summary collapse
- .local_path_to_image_filename(canvas, path) ⇒ Object
- .other_uri_filename(canvas, uri) ⇒ Object
- .setup_image_file(canvas, uri, filename) ⇒ Object
- .start_with_scheme?(uri_string) ⇒ Boolean
- .tmp_filename(canvas, key) ⇒ Object
- .uri_string_to_image_filename(canvas, uri_string) ⇒ Object
- .uri_to_image_filename(canvas, uri) ⇒ Object
Class Method Details
permalink .local_path_to_image_filename(canvas, path) ⇒ Object
[View source]
113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/rabbit/parser/ext/image.rb', line 113 def local_path_to_image_filename(canvas, path) path = Pathname.new(Filename.new(path).encode) return path.to_s if path.absolute? = canvas.full_path(path.to_s) if start_with_scheme?() uri_string_to_image_filename(canvas, ) else end end |
permalink .other_uri_filename(canvas, uri) ⇒ Object
[View source]
131 132 133 134 135 |
# File 'lib/rabbit/parser/ext/image.rb', line 131 def other_uri_filename(canvas, uri) filename = tmp_filename(canvas, uri.to_s) setup_image_file(canvas, uri, filename) filename end |
permalink .setup_image_file(canvas, uri, filename) ⇒ Object
[View source]
137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/rabbit/parser/ext/image.rb', line 137 def setup_image_file(canvas, uri, filename) return if File.exist?(filename) begin URI.open(uri, "rb") do |in_file| File.open(filename, "wb") do |out| out.print(in_file.read) end end rescue SocketError, OpenURI::HTTPError canvas.logger.warn("#{$!.}: #{uri}") end end |
permalink .start_with_scheme?(uri_string) ⇒ Boolean
150 151 152 |
# File 'lib/rabbit/parser/ext/image.rb', line 150 def start_with_scheme?(uri_string) /\A[a-z][a-z\d+\-.]+:/i =~ uri_string end |
permalink .tmp_filename(canvas, key) ⇒ Object
[View source]
125 126 127 128 129 |
# File 'lib/rabbit/parser/ext/image.rb', line 125 def tmp_filename(canvas, key) dir = canvas.tmp_dir_name FileUtils.mkdir_p(dir) File.join(dir, CGI.escape(key)) end |
permalink .uri_string_to_image_filename(canvas, uri_string) ⇒ Object
[View source]
89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/rabbit/parser/ext/image.rb', line 89 def uri_string_to_image_filename(canvas, uri_string) if start_with_scheme?(uri_string) uri = URI.parse(uri_string) scheme = uri.scheme unless ALLOWED_IMG_URL_SCHEME.include?(scheme.to_s.downcase) return nil end uri_to_image_filename(canvas, uri) else local_path_to_image_filename(canvas, uri_string) end end |
permalink .uri_to_image_filename(canvas, uri) ⇒ Object
[View source]
102 103 104 105 106 107 108 109 110 111 |
# File 'lib/rabbit/parser/ext/image.rb', line 102 def uri_to_image_filename(canvas, uri) case uri.scheme.to_s.downcase when "file" Filename.new(uri.path).encode when "http", "https", "ftp" other_uri_filename(canvas, uri) else nil end end |