Class: Oddb2xml::SwissmedicDownloader

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

Instance Attribute Summary

Attributes inherited from Downloader

#type

Instance Method Summary collapse

Methods inherited from Downloader

#init

Constructor Details

#initialize(type = :orphan) ⇒ SwissmedicDownloader

Returns a new instance of SwissmedicDownloader.



259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
# File 'lib/oddb2xml/downloader.rb', line 259

def initialize(type=:orphan)
  @type = type
  case @type
  when :orphan
    action = "arzneimittel/00156/00221/00222/00223/00224/00227/00228/index.html?lang=de"
    @xpath = "//div[@id='sprungmarke10_3']//a[@title='Humanarzneimittel']"
  when :fridge
    action = "arzneimittel/00156/00221/00222/00235/index.html?lang=de"
    @xpath = "//div[@id='sprungmarke10_2']//a[@title='Excel-Version']"
  when :package
    action = "arzneimittel/00156/00221/00222/00230/index.html?lang=de"
    @xpath = "//div[@id='sprungmarke10_7']//a[@title='Excel-Version Zugelassene Verpackungen*']"
  end
  url = "http://www.swissmedic.ch/#{action}"
  super({}, url)
end

Instance Method Details

#downloadObject



275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
# File 'lib/oddb2xml/downloader.rb', line 275

def download
  @type == file = "swissmedic_#{@type}.xlsx"
  begin
    page = @agent.get(@url)
    if link_node = page.search(@xpath).first
      link = Mechanize::Page::Link.new(link_node, @agent, page)
      response = link.click
      response.save_as(file)
      response = nil # win
    end
    return File.expand_path(file)
  rescue Timeout::Error, Errno::ETIMEDOUT
    retrievable? ? retry : raise
  ensure
    Oddb2xml.download_finished(file, false)
  end
  return File.expand_path(file)
end