Sha256: c32b9d4bae9b441c143872aaf85e4670d86d1c454265709ca05fd25bacd3b230

Contents?: true

Size: 819 Bytes

Versions: 2

Compression:

Stored size: 819 Bytes

Contents

require 'net/http'
require 'pathname'

module PRSS
  class Downloader

    def initialize(links)
      @links = links
    end

    def self.verify!(output_path)
      output = Pathname.new(output_path).expand_path
      raise 'output path is not directory' unless output.directory?
      output
    end

    def download_to(output_path)
      output = self.class.verify!(output_path)

      @files = @links.each.map do |uri|
        response = Net::HTTP.get_response(uri)
        save_file(response, output)
      end.compact
    end

    def save_file(response, output)
      filename = response['Content-Disposition'][/filename="(.+)"$/ ,1]
      file = output.join(filename)

      return if file.exist?

      open(file, 'wb') do |file|
        response.read_body(file)
      end

      filename
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
prss-0.2.1 lib/prss/downloader.rb
prss-0.2.0 lib/prss/downloader.rb