oddb2xml 1.6.8 → 1.6.9

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,8 @@
1
+ === 1.6.9 / 07.01.2013
2
+
3
+ * Updated Rakefile for rubyzip ~> 0.9.9
4
+ * Remove *.xls/x-Files after extraction
5
+
1
6
  === 1.6.8 / 07.01.2013
2
7
 
3
8
  * Updated Rakefile to include rubyXL
data/Manifest.txt CHANGED
@@ -45,17 +45,17 @@ spec/data/oddb_substance.xml
45
45
  spec/data/swissindex.xml
46
46
  spec/data/swissindex_nonpharma.xml
47
47
  spec/data/swissindex_pharma.xml
48
- spec/data/swissmedic_fridge.xlsx
49
48
  spec/data/swissmedic_fridges.html
50
49
  spec/data/swissmedic_fridges.xls
50
+ spec/data/swissmedic_fridges.xlsx
51
51
  spec/data/swissmedic_info.html
52
52
  spec/data/swissmedic_info.zip
53
53
  spec/data/swissmedic_info_2.html
54
- spec/data/swissmedic_orphan.xls
55
54
  spec/data/swissmedic_orphans.html
56
55
  spec/data/swissmedic_orphans.xls
57
- spec/data/swissmedic_package.xlsx
58
56
  spec/data/swissmedic_packages.html
57
+ spec/data/swissmedic_packages.xls
58
+ spec/data/swissmedic_packages.xlsx
59
59
  spec/data/wsdl.xml
60
60
  spec/data/wsdl_nonpharma.xml
61
61
  spec/data/wsdl_pharma.xml
data/Rakefile CHANGED
@@ -19,7 +19,7 @@ Hoe.spec 'oddb2xml' do
19
19
  self.urls = ["https://github.com/zdavatz/oddb2xml"] # gem.homepage
20
20
 
21
21
  # gem.add_runtime_dependency
22
- self.extra_deps << ['rubyzip']
22
+ self.extra_deps << ['rubyzip', '~> 0.9.9']
23
23
  self.extra_deps << ['archive-tar-minitar']
24
24
  self.extra_deps << ['mechanize', '~> 2.5.1']
25
25
  self.extra_deps << ['nokogiri']
@@ -30,6 +30,7 @@ module Oddb2xml
30
30
  end
31
31
  end
32
32
  class Downloader
33
+ attr_reader :type
33
34
  def initialize(options={}, url=nil)
34
35
  @options = options
35
36
  @url = url
@@ -3,6 +3,7 @@
3
3
  require 'nokogiri'
4
4
  require 'spreadsheet'
5
5
  require 'stringio'
6
+ require 'rubyXL'
6
7
 
7
8
  module Oddb2xml
8
9
  module TxtExtractorMethods
@@ -197,6 +198,7 @@ module Oddb2xml
197
198
  end
198
199
  class SwissmedicExtractor < Extractor
199
200
  def initialize(filename, type)
201
+ @filename = filename
200
202
  @type = type
201
203
  if type == :orphan
202
204
  book = Spreadsheet.open(filename, 'rb')
@@ -224,6 +226,7 @@ module Oddb2xml
224
226
  end
225
227
  end
226
228
  end
229
+ cleanup_file
227
230
  data.uniq
228
231
  end
229
232
  def to_hash # Packungen.xls
@@ -261,24 +264,17 @@ module Oddb2xml
261
264
  end
262
265
  end
263
266
  end
267
+ cleanup_file
264
268
  data
265
269
  end
266
270
  private
267
- def extract_number(row, i, ptrn=/^\d{5}$/)
271
+ def cleanup_file
268
272
  begin
269
- return nil unless row[i]
270
- row[i] = row[i].to_i if row[i].is_a? Float
271
- number = row[i].to_s.gsub(/[^0-9]/, '')
272
- number = number.rjust(5, '0') if ptrn == /^\d{5}$/
273
- if number =~ ptrn
274
- return number
275
- else
276
- nil
277
- end
278
- rescue NoMethodError
279
- nil
280
- end
273
+ File.unlink(@filename) if File.exists?(@filename)
274
+ rescue Errno::EACCES # Permission Denied on Windows
275
+ end unless defined?(RSpec)
281
276
  end
277
+
282
278
  def calc_checksum(str)
283
279
  str = str.strip
284
280
  sum = 0
@@ -1,3 +1,3 @@
1
1
  module Oddb2xml
2
- VERSION = "1.6.8"
2
+ VERSION = "1.6.9"
3
3
  end
Binary file
@@ -63,9 +63,9 @@ describe Oddb2xml::SwissmedicInfoExtractor do
63
63
  subject { Oddb2xml::SwissmedicInfoExtractor.new("") }
64
64
  it { expect(subject.to_hash).to be_empty }
65
65
  end
66
- context 'can parse swissmedic_package.xlsx' do
66
+ context 'can parse swissmedic_packages.xlsx' do
67
67
  it {
68
- filename = File.join(File.dirname(__FILE__), 'data/swissmedic_package.xlsx')
68
+ filename = File.join(File.dirname(__FILE__), 'data/swissmedic_packages.xlsx')
69
69
  @packs = Oddb2xml::SwissmedicExtractor.new(filename, :package).to_hash
70
70
  expect(@packs.size).to eq(14)
71
71
  first = @packs.first[1]
@@ -77,18 +77,19 @@ describe Oddb2xml::SwissmedicInfoExtractor do
77
77
  expect(@packs.first[0].to_s).to eq('00274001')
78
78
  }
79
79
  end
80
- context 'can parse swissmedic_fridge.xlsx' do
80
+ context 'can parse swissmedic_fridges.xlsx' do
81
81
  it {
82
- filename = File.join(File.dirname(__FILE__), 'data/swissmedic_fridge.xlsx')
82
+ filename = File.join(File.dirname(__FILE__), 'data/swissmedic_fridges.xlsx')
83
83
  @packs = Oddb2xml::SwissmedicExtractor.new(filename, :fridge).to_arry
84
84
  expect(@packs.size).to eq(17)
85
85
  expect(@packs[0]).to eq("58618")
86
86
  expect(@packs[1]).to eq("00696")
87
87
  }
88
88
  end
89
- context 'can parse swissmedic_orphan.xls' do
89
+ context 'can parse swissmedic_orphans.xls' do
90
90
  it {
91
- filename = File.join(File.dirname(__FILE__), 'data/swissmedic_orphan.xls')
91
+ filename = File.join(File.dirname(__FILE__), 'data/swissmedic_orphans.xls')
92
+ expect(File.exists?(filename)).to eq(true), "File #{filename} must exists"
92
93
  @packs = Oddb2xml::SwissmedicExtractor.new(filename, :orphan).to_arry
93
94
  expect(@packs.size).to eq(72)
94
95
  expect(@packs.first).to eq("62132")
data/spec/spec_helper.rb CHANGED
@@ -72,26 +72,29 @@ module ServerMockHelper
72
72
  end
73
73
  def setup_swissmedic_server_mock
74
74
  host = 'www.swissmedic.ch'
75
- {
76
- :orphans => {:html => '/daten/00081/index.html?lang=de', :xls => '/download'},
77
- :fridges => {:html => '/daten/00080/00254/index.html?lang=de', :xls => '/download'},
78
- :packages => {:html => '/daten/00080/00251/index.html?lang=de', :xls => '/download'},
75
+ {
76
+ :orphans => {:html => '/arzneimittel/00156/00221/00222/00223/00224/00227/00228/index.html?lang=de', :xls => '/download'},
77
+ :fridges => {:html => '/arzneimittel/00156/00221/00222/00235/index.html?lang=de', :xls => '/download'},
78
+ :packages => {:html => '/arzneimittel/00156/00221/00222/00230/index.html?lang=de', :xls => '/download'},
79
79
  }.each_pair do |type, urls|
80
80
  # html (dummy)
81
81
  stub_html_url = "http://#{host}" + urls[:html]
82
- stub_response = File.read(File.expand_path("../data/swissmedic_#{type.to_s}.html", __FILE__))
82
+ filename = File.expand_path("../data/swissmedic_#{type.to_s}.html", __FILE__)
83
+ stub_response = File.read(filename)
83
84
  stub_request(:get, stub_html_url).
84
- with(:headers => {
85
- 'Accept' => '*/*',
86
- 'Host' => host,
87
- }).
85
+ with(:headers => {'Accept'=>'*/*', 'Accept-Charset'=>'ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'Accept-Encoding'=>'gzip,deflate,identity', 'Accept-Language'=>'en-us,en;q=0.5', 'Connection'=>'keep-alive', 'Host'=> host, 'Keep-Alive'=>'300', 'User-Agent'=>'Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20100101 Firefox/16.0'}).
88
86
  to_return(
89
87
  :status => 200,
90
88
  :headers => {'Content-Type' => 'text/html; charset=utf-8'},
91
89
  :body => stub_response)
92
90
  # xls
93
- stub_xls_url = "http://#{host}" + urls[:xls] + "/swissmedic_#{type.to_s}.xls"
94
- stub_response = File.read(File.expand_path("../data/swissmedic_#{type.to_s}.xls", __FILE__))
91
+ if type == :orphans
92
+ stub_xls_url = "http://#{host}" + urls[:xls] + "/swissmedic_#{type.to_s}.xls"
93
+ stub_response = File.read(File.expand_path("../data/swissmedic_#{type.to_s}.xls", __FILE__))
94
+ else
95
+ stub_xls_url = "http://#{host}" + urls[:xls] + "/swissmedic_#{type.to_s}.xlsx"
96
+ stub_response = File.read(File.expand_path("../data/swissmedic_#{type.to_s}.xlsx", __FILE__))
97
+ end
95
98
  stub_request(:get, stub_xls_url).
96
99
  with(:headers => {
97
100
  'Accept' => '*/*',
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oddb2xml
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.8
4
+ version: 1.6.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -16,17 +16,17 @@ dependencies:
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: 0.9.9
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ! '>='
27
+ - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: '0'
29
+ version: 0.9.9
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: archive-tar-minitar
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -245,17 +245,17 @@ files:
245
245
  - spec/data/swissindex.xml
246
246
  - spec/data/swissindex_nonpharma.xml
247
247
  - spec/data/swissindex_pharma.xml
248
- - spec/data/swissmedic_fridge.xlsx
249
248
  - spec/data/swissmedic_fridges.html
250
249
  - spec/data/swissmedic_fridges.xls
250
+ - spec/data/swissmedic_fridges.xlsx
251
251
  - spec/data/swissmedic_info.html
252
252
  - spec/data/swissmedic_info.zip
253
253
  - spec/data/swissmedic_info_2.html
254
- - spec/data/swissmedic_orphan.xls
255
254
  - spec/data/swissmedic_orphans.html
256
255
  - spec/data/swissmedic_orphans.xls
257
- - spec/data/swissmedic_package.xlsx
258
256
  - spec/data/swissmedic_packages.html
257
+ - spec/data/swissmedic_packages.xls
258
+ - spec/data/swissmedic_packages.xlsx
259
259
  - spec/data/wsdl.xml
260
260
  - spec/data/wsdl_nonpharma.xml
261
261
  - spec/data/wsdl_pharma.xml