Sha256: 571480a9f82be371be8dcbb5ec2a7a2e16a16701bd089876accefdd1cb638f73
Contents?: true
Size: 1.33 KB
Versions: 1
Compression:
Stored size: 1.33 KB
Contents
class RemoteTable class Request attr_accessor :parsed_url, :post_data, :username, :password attr_accessor :form_data # TODO: support post_data # TODO: support HTTP basic auth def initialize(bus) @parsed_url = URI.parse(bus[:url]) or raise "need url" if @parsed_url.host == 'spreadsheets.google.com' and (bus[:format].blank? or bus[:format].to_s == 'csv') @parsed_url.query = 'output=csv&' + @parsed_url.query.sub(/\&*output=.*(\&|\z)/, '') end @form_data = bus[:form_data] end def download path = ::File.join staging_dir_path, 'REMOTE_TABLE_PACKAGE' if parsed_url.scheme == 'file' parsed_url.path else cmd = %{ curl \ --silent \ --header "Expect: " \ --location \ #{"--data \"#{form_data}\"" if form_data.present?} \ "#{parsed_url}" \ --output "#{path}" } `#{cmd}` path end end private def staging_dir_path return @_staging_dir_path if @_staging_dir_path @_staging_dir_path = Tempfile.open(parsed_url.to_s.gsub(/[^a-z0-9]+/i, '_')[0,100]).path FileUtils.rm_f @_staging_dir_path FileUtils.mkdir @_staging_dir_path at_exit { FileUtils.rm_rf @_staging_dir_path } @_staging_dir_path end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
remote_table-0.2.9 | lib/remote_table/request.rb |