Class: Dato::Upload::CreateUploadPath
- Inherits:
-
Object
- Object
- Dato::Upload::CreateUploadPath
- Defined in:
- lib/dato/upload/create_upload_path.rb
Instance Attribute Summary collapse
-
#client ⇒ Object
readonly
Returns the value of attribute client.
-
#source ⇒ Object
readonly
Returns the value of attribute source.
Instance Method Summary collapse
- #download_file(url) ⇒ Object
- #file ⇒ Object
- #filename ⇒ Object
- #http_source? ⇒ Boolean
-
#initialize(client, source) ⇒ CreateUploadPath
constructor
A new instance of CreateUploadPath.
- #upload_path ⇒ Object
Constructor Details
#initialize(client, source) ⇒ CreateUploadPath
Returns a new instance of CreateUploadPath.
13 14 15 16 |
# File 'lib/dato/upload/create_upload_path.rb', line 13 def initialize(client, source) @client = client @source = source end |
Instance Attribute Details
#client ⇒ Object (readonly)
Returns the value of attribute client.
11 12 13 |
# File 'lib/dato/upload/create_upload_path.rb', line 11 def client @client end |
#source ⇒ Object (readonly)
Returns the value of attribute source.
11 12 13 |
# File 'lib/dato/upload/create_upload_path.rb', line 11 def source @source end |
Instance Method Details
#download_file(url) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/dato/upload/create_upload_path.rb', line 67 def download_file(url) connection = Faraday.new do |c| c.response :raise_error c.use FaradayMiddleware::FollowRedirects c.adapter :net_http end connection.get(url).body rescue Faraday::Error => e puts "Error during uploading #{url}" raise e end |
#file ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/dato/upload/create_upload_path.rb', line 18 def file @file ||= if http_source? uri = Addressable::URI.parse(source) ext = ::File.extname(uri.path).downcase tempfile = Tempfile.new(['file', ext]) tempfile.binmode tempfile.write(download_file(source)) tempfile.rewind tempfile else ::File.new(::File.(source)) end end |
#filename ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/dato/upload/create_upload_path.rb', line 39 def filename if http_source? ::File.basename(source) else ::File.basename(file.path) end end |
#http_source? ⇒ Boolean
32 33 34 35 36 37 |
# File 'lib/dato/upload/create_upload_path.rb', line 32 def http_source? uri = Addressable::URI.parse(source) uri.scheme == 'http' || uri.scheme == 'https' rescue Addressable::URI::InvalidURIError false end |
#upload_path ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/dato/upload/create_upload_path.rb', line 47 def upload_path upload_request = client.upload_request.create(filename: filename) uri = URI.parse(upload_request[:url]) mime_type = MIME::Types.of(filename).first request = Net::HTTP::Put.new(uri) if mime_type request.add_field("Content-Type", mime_type.to_s) end request.body = file.read http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.request(request) upload_request[:id] end |