Sha256: d4fb2418236811c9a9bef699bad91df4d166b9d2f87950b8bdc73eeb5d1bd0df
Contents?: true
Size: 1.36 KB
Versions: 1
Compression:
Stored size: 1.36 KB
Contents
require 'uri' require 'open-uri' module Pageflow module Chart class Downloader attr_reader :options class HTTPError < StandardError; end def initialize(options = {}) @options = options end def load(url, raise_on_http_error: false) file = make_absolute(url).open yield(file) rescue OpenURI::HTTPError => exception Rails.logger.error "Exception loading url #{url}: #{exception.message}" raise(HTTPError) if raise_on_http_error ensure file.close if file end def load_all(urls, options = {}) file = Tempfile.new(['concatenation', options.fetch(:extension, 'txt')]) file.binmode begin urls.map do |url| file.write(options[:before_each]) if options.key?(:before_each) load(url) do |source| while data = source.read(16 * 1024) file.write(data) end end file.write(options[:after_each]) if options.key?(:after_each) file.write(options.fetch(:separator, "\n")) end file.rewind yield(file) ensure file.close file.unlink end end private def make_absolute(url) options[:base_url] ? URI.join(options[:base_url], url) : URI.parse(url) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pageflow-chart-2.6.0 | lib/pageflow/chart/downloader.rb |