Sha256: 21dc9da3fe9703c08c390be006f008777fdd3c03a5da48a52432fbbe25575698
Contents?: true
Size: 1.41 KB
Versions: 1
Compression:
Stored size: 1.41 KB
Contents
# -*- encoding : utf-8 -*- module Nyaa class Downloader attr_accessor :target, :destination, :retries attr_accessor :response, :filename def initialize(url, path, retries = 3) self.target = url self.destination = Nyaa::Utils.safe_path(path) self.retries = retries self.response = request self.filename = name_from_disposition @fail = nil end def save unless @fail path = self.destination + '/' + filename; File.open("#{self.destination}/#{filename}", 'w') do |f| f.write(self.response.read) end return path; end return nil; end def failed? @fail end private def request begin response = open(self.target) rescue StandardError => e if retries > 0 retries -= 1 sleep = 1 retry end @fail = true end @fail = false response end # Filename from Content Disposition Header Field # http://www.ietf.org/rfc/rfc2183.txt def name_from_disposition disp = self.response.meta['content-disposition'] disp_filename = disp.split(/;\s+/).select { |v| v =~ /filename\s*=/ }[0] re = /([""'])(?:(?=(\\?))\2.)*?\1/ if re.match(disp_filename) filename = re.match(disp_filename).to_s.gsub(/\A['"]+|['"]+\Z/, "") else nil end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
nyaa-1.0.5 | lib/nyaa/downloader.rb |