Sha256: f5833a9354b1e3b3e1751d22000cd3df27360c3c06aa748953218bd88a652ae3
Contents?: true
Size: 1.33 KB
Versions: 1
Compression:
Stored size: 1.33 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 File.open("#{self.destination}/#{filename}", 'w') do |f| f.write(self.response.read) end end 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.4 | lib/nyaa/downloader.rb |