Class: Oddb2xml::SwissmedicDownloader
- Inherits:
-
Downloader
- Object
- Downloader
- Oddb2xml::SwissmedicDownloader
- Includes:
- DownloadMethod
- Defined in:
- lib/oddb2xml/downloader.rb
Constant Summary collapse
- BASE_URL =
'https://www.swissmedic.ch'
Instance Attribute Summary
Attributes inherited from Downloader
Instance Method Summary collapse
- #download ⇒ Object
-
#initialize(type = :orphan, options = {}) ⇒ SwissmedicDownloader
constructor
A new instance of SwissmedicDownloader.
Methods inherited from Downloader
Constructor Details
#initialize(type = :orphan, options = {}) ⇒ SwissmedicDownloader
Returns a new instance of SwissmedicDownloader.
284 285 286 287 288 289 290 291 292 293 294 295 |
# File 'lib/oddb2xml/downloader.rb', line 284 def initialize(type=:orphan, = {}) url = BASE_URL + '/swissmedic/de/home/services/listen_neu.html' doc = Nokogiri::HTML(open(url)) @type = type @options = case @type when :orphan @direct_url_link = BASE_URL + doc.xpath("//a").find{|x| /Humanarzneimittel mit Status Orphan Drug/.match(x.children.text) }.attributes['href'].value when :package @direct_url_link = BASE_URL + doc.xpath("//a").find{|x| /Zugelassene Packungen/.match(x.children.text) }.attributes['href'].value end end |
Instance Method Details
#download ⇒ Object
296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 |
# File 'lib/oddb2xml/downloader.rb', line 296 def download @file2save = File.join(Oddb2xml::WorkDir, "swissmedic_#{@type}.xlsx") report_download(@url, @file2save) if @options[:calc] and @options[:skip_download] and File.exists?(@file2save) and (Time.now-File.ctime(@file2save)).to_i < 24*60*60 Oddb2xml.log "SwissmedicDownloader #{__LINE__}: Skip downloading #{@file2save} #{File.size(@file2save)} bytes" return File.(@file2save) end begin FileUtils.rm(File.(@file2save), :verbose => !defined?(RSpec)) if File.exists?(File.(@file2save)) @url = @direct_url_link download_as(@file2save, 'w+') if @options[:artikelstamm] cmd = "ssconvert '#{@file2save}' '#{File.join(Downloads, File.basename(@file2save).sub(/\.xls.*/, '.csv'))}' 2> /dev/null" Oddb2xml.log(cmd) system(cmd) end return File.(@file2save) rescue Timeout::Error, Errno::ETIMEDOUT retrievable? ? retry : raise ensure Oddb2xml.download_finished(@file2save, false) end return File.(@file2save) end |