Sha256: b66a659649e19f6e34592bd9db1e7c44a268cd65d90d8f5133a3d5d62f329545

Contents?: true

Size: 782 Bytes

Versions: 2

Compression:

Stored size: 782 Bytes

Contents

require "copypasta/entry/base"

require "uri"

module Copypasta
  module Entry
    class Download < Copypasta::Entry::Base
      attr_reader :source

      def initialize(filename, source:, only_if: nil)
        raise "filename must be a string." unless filename.is_a?(String)
        raise "source url '#{source}' looks invalid." \
          unless source =~ URI::DEFAULT_PARSER.make_regexp
        raise "only_if must be null or a Proc." if !only_if.nil? && !only_if.is_a?(Proc)

        @filename = filename
        @source = source
        @only_if = only_if
      end

      private

      def do_apply(destination, _parameters)
        require "open-uri"

        download = open(@source)
        IO.copy_stream(download, target_file(destination))
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
copypasta-0.1.1 lib/copypasta/entry/download.rb
copypasta-0.1.0 lib/copypasta/entry/download.rb