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



351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
# File 'lib/oddb2xml/downloader.rb', line 351

def download
  file = File.join(DOWNLOADS, "swissmedic_info.zip")
  report_download(@url, file)
  FileUtils.rm_f(file, verbose: false) 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



345
346
347
348
349
# File 'lib/oddb2xml/downloader.rb', line 345

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