Class: Oddb2xml::SwissmedicInfoDownloader

Inherits:
Downloader
  • Object
show all
Defined in:
lib/oddb2xml/downloader.rb

Instance Attribute Summary

Attributes inherited from Downloader

#agent, #file2save, #type, #url

Instance Method Summary collapse

Methods inherited from Downloader

#initialize, #report_download

Constructor Details

This class inherits a constructor from Oddb2xml::Downloader

Instance Method Details

#downloadObject



344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
# File 'lib/oddb2xml/downloader.rb', line 344

def download
  file = File.join(DOWNLOADS, "swissmedic_info.zip")
  report_download(@url, file)
  FileUtils.rm_f(file, verbose: true) unless Oddb2xml.skip_download?
  unless File.exist?(file)
    begin
      response = nil
      if (home = @agent.get(@url))
        form = home.form_with(id: "Form1")
        bttn = form.button_with(name: "ctl00$MainContent$btnOK")
        if (page = form.submit(bttn))
          form = page.form_with(id: "Form1")
          bttn = form.button_with(name: "ctl00$MainContent$BtnYes")
          response = form.submit(bttn)
        end
      end
      if response
        response.save_as(file)
        response = nil # win
      end
    rescue Timeout::Error, Errno::ETIMEDOUT
      retrievable? ? retry : raise
    rescue NoMethodError
      # pass
    ensure
      Oddb2xml.download_finished(file)
    end
  end
  read_xml_from_zip(/^AipsDownload_/iu, file)
end

#initObject



338
339
340
341
342
# File 'lib/oddb2xml/downloader.rb', line 338

def init
  super
  @agent.ignore_bad_chunking = true
  @url ||= "http://download.swissmedicinfo.ch/Accept.aspx?ReturnUrl=%2f"
end