Sha256: 559ad27bd89e36ccc55d84e29c6ec7984fd6dd2db4de74e75471373006b88ef2

Contents?: true

Size: 1.25 KB

Versions: 20

Compression:

Stored size: 1.25 KB

Contents

# encoding: utf-8

require 'net/http'

module CarrierWave
  module Uploader
    module Download

      depends_on CarrierWave::Uploader::Callbacks
      depends_on CarrierWave::Uploader::Configuration
      depends_on CarrierWave::Uploader::Cache

      class RemoteFile
        def initialize(uri)
          @uri = URI.parse(uri)
        end

        def original_filename
          File.basename(@uri.path)
        end

        def respond_to?(*args)
          super or file.respond_to?(*args)
        end

        def http?
          @uri.scheme =~ /^https?$/
        end

      private

        def file
          @file ||= StringIO.new(Net::HTTP.get_response(@uri).body)
        end

        def method_missing(*args, &block)
          file.send(*args, &block)
        end
      end

      ##
      # Caches the file by downloading it from the given URL.
      #
      # === Parameters
      #
      # [url (String)] The URL where the remote file is stored
      #
      def download!(uri)
        unless uri.blank?
          file = RemoteFile.new(uri)
          raise CarrierWave::DownloadError, "trying to download a file which is not served over HTTP" unless file.http?
          cache!(file) 
        end
      end

    end # Download
  end # Uploader
end # CarrierWave

Version data entries

20 entries across 20 versions & 4 rubygems

Version Path
thorsson_carrierwave-0.4.12 lib/carrierwave/uploader/download.rb
thorsson_carrierwave-0.4.11 lib/carrierwave/uploader/download.rb
thorsson_carrierwave-0.4.10 lib/carrierwave/uploader/download.rb
thorsson_carrierwave-0.4.9 lib/carrierwave/uploader/download.rb
thorsson_carrierwave-0.4.8 lib/carrierwave/uploader/download.rb
thorsson_carrierwave-0.4.6 lib/carrierwave/uploader/download.rb
thorsson_carrierwave-0.4.5 lib/carrierwave/uploader/download.rb
carrierwave-0.4.10 lib/carrierwave/uploader/download.rb
carrierwave-0.4.9 lib/carrierwave/uploader/download.rb
carrierwave-0.4.8 lib/carrierwave/uploader/download.rb
carrierwave-0.4.7 lib/carrierwave/uploader/download.rb
carrierwave-0.4.6 lib/carrierwave/uploader/download.rb
samlown-carrierwave-0.4.5 lib/carrierwave/uploader/download.rb
dsturnbull-carrierwave-0.4.9 lib/carrierwave/uploader/download.rb
dsturnbull-carrierwave-0.4.8 lib/carrierwave/uploader/download.rb
dsturnbull-carrierwave-0.4.7 lib/carrierwave/uploader/download.rb
carrierwave-0.4.5 lib/carrierwave/uploader/download.rb
dsturnbull-carrierwave-0.4.6 lib/carrierwave/uploader/download.rb
dsturnbull-carrierwave-0.4.5 lib/carrierwave/uploader/download.rb
carrierwave-0.4.4 lib/carrierwave/uploader/download.rb