oddb2xml 1.1.5 → 1.1.6

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,9 @@
1
+ === 1.1.6 / 13.01.2013
2
+
3
+ * Update message for SSLv3 Error
4
+ * mswin mswin mswin :(
5
+ * enable SSL with SSLv3 cert at soap request
6
+
1
7
  === 1.1.5 / 11.01.2013
2
8
 
3
9
  * Add BG tags into article.xml from ywesee BM.txt
data/README.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  oddb2xml, creates xml files using swissINDEX, BAG-XML and Swissmedic.
4
4
 
5
+ The following additional data is in the files:
6
+
7
+ * Wirkstoffe
8
+ * Kühlkette (gemäss Swissmedic)
9
+ * Orphan Drugs (gemäss Swissmedic)
10
+ * FI (de und fr)
11
+ * Limitation-Texte (gemäss BAG XML)
12
+ * Interaktionen (EPha.ch)
13
+ * Betäubungsmittel und psychotrope Stoffe (gemäss Swissmedic)
14
+ * Non-Pharma from Refdata and Suppliers
5
15
 
6
16
  ## usage
7
17
 
data/lib/oddb2xml/cli.rb CHANGED
@@ -43,16 +43,16 @@ module Oddb2xml
43
43
  [:orphans, :fridges].each do |type|
44
44
  threads << Thread.new do
45
45
  downloader = SwissmedicDownloader.new(type)
46
- io = downloader.download
47
- self.instance_variable_set("@#{type.to_s}", SwissmedicExtractor.new(io, type).to_arry)
46
+ bin = downloader.download
47
+ self.instance_variable_set("@#{type.to_s}", SwissmedicExtractor.new(bin, type).to_arry)
48
48
  end
49
49
  end
50
50
  # epha
51
51
  threads << Thread.new do
52
52
  downloader = EphaDownloader.new
53
- io = downloader.download
53
+ str = downloader.download
54
54
  @mutex.synchronize do
55
- @actions = EphaExtractor.new(io).to_arry
55
+ @actions = EphaExtractor.new(str).to_arry
56
56
  end
57
57
  end
58
58
  # bag
@@ -67,9 +67,9 @@ module Oddb2xml
67
67
  # ywesee
68
68
  threads << Thread.new do
69
69
  downloader = YweseeBMDownloader.new
70
- io = downloader.download
70
+ str = downloader.download
71
71
  @mutex.synchronize do
72
- @flags = YweseeBMExtractor.new(io).to_hash
72
+ @flags = YweseeBMExtractor.new(str).to_hash
73
73
  end
74
74
  end
75
75
  LANGUAGES.each do |lang|
@@ -60,13 +60,14 @@ module Oddb2xml
60
60
  file = 'XMLPublications.zip'
61
61
  begin
62
62
  response = @agent.get(@url)
63
- response.save_as file
63
+ response.save_as(file)
64
+ response = nil # mswin
64
65
  return read_xml_form_zip(/^Preparation/iu, file)
65
66
  rescue Timeout::Error
66
67
  retrievable? ? retry : raise
67
68
  ensure
68
- if File.exists? file
69
- File.unlink file
69
+ if File.exists?(file)
70
+ File.unlink(file)
70
71
  end
71
72
  end
72
73
  end
@@ -83,7 +84,7 @@ module Oddb2xml
83
84
  :log_level => :info,
84
85
  :log => false, # $stdout
85
86
  :raise_errors => true,
86
- :ssl_verify_mode => :none,
87
+ :ssl_version => :SSLv3,
87
88
  :wsdl => @url
88
89
  }
89
90
  @client = Savon::Client.new(config)
@@ -101,6 +102,7 @@ XML
101
102
  response = @client.call(:download_all, :xml => soap)
102
103
  if response.success?
103
104
  if xml = response.to_xml
105
+ response = nil # mswin
104
106
  return xml
105
107
  else
106
108
  # received broken data or internal error
@@ -109,6 +111,12 @@ XML
109
111
  else
110
112
  raise Timeout::Error
111
113
  end
114
+ rescue HTTPI::SSLError
115
+ puts
116
+ puts "Please install SSLv3 cert on your machine."
117
+ puts "You can check location of cert file with `ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE'`."
118
+ puts "Or confirm SSL_CERT_FILE environment."
119
+ exit
112
120
  rescue Timeout::Error
113
121
  retrievable? ? retry : raise
114
122
  end
@@ -135,14 +143,17 @@ XML
135
143
  if link_node = page.search(@xpath).first
136
144
  link = Mechanize::Page::Link.new(link_node, @agent, page)
137
145
  response = link.click
138
- response.save_as file
146
+ response.save_as(file)
147
+ response = nil # mswin
139
148
  end
140
- return File.open(file, 'rb')
149
+ io = File.open(file, 'rb')
150
+ return io.read
141
151
  rescue Timeout::Error
142
152
  retrievable? ? retry : raise
143
153
  ensure
144
- if File.exists? file
145
- File.unlink file
154
+ io.close unless io.closed?
155
+ if File.exists?(file)
156
+ File.unlink(file)
146
157
  end
147
158
  end
148
159
  end
@@ -167,7 +178,8 @@ XML
167
178
  end
168
179
  end
169
180
  if response
170
- response.save_as file
181
+ response.save_as(file)
182
+ response = nil # msmin
171
183
  end
172
184
  return read_xml_form_zip(/^AipsDownload_/iu, file)
173
185
  rescue Timeout::Error
@@ -175,8 +187,8 @@ XML
175
187
  rescue NoMethodError => e
176
188
  # pass
177
189
  ensure
178
- if File.exists? file
179
- File.unlink file
190
+ if File.exists?(file)
191
+ File.unlink(file)
180
192
  end
181
193
  end
182
194
  end
@@ -190,13 +202,16 @@ XML
190
202
  file = "epha_interactions.csv"
191
203
  begin
192
204
  response = @agent.get(@url)
193
- response.save_as file
194
- return File.open(file, 'r')
205
+ response.save_as(file)
206
+ response = nil # mswin
207
+ io = File.open(file, 'r')
208
+ return io.read
195
209
  rescue Timeout::Error
196
210
  retrievable? ? retry : raise
197
211
  ensure
198
- if File.exists? file
199
- File.unlink file
212
+ io.close unless io.closed? # mswin
213
+ if File.exists?(file)
214
+ File.unlink(file)
200
215
  end
201
216
  end
202
217
  end
@@ -210,13 +225,16 @@ XML
210
225
  file = 'ywesee_bm_update.txt'
211
226
  begin
212
227
  response = @agent.get(@url)
213
- response.save_as file
214
- return File.open(file, 'r')
228
+ response.save_as(file)
229
+ response = nil # mswin
230
+ io = File.open(file, 'r')
231
+ return io.read
215
232
  rescue Timeout::Error
216
233
  retrievable? ? retry : raise
217
234
  ensure
218
- if File.exists? file
219
- File.unlink file
235
+ io.close unless io.closed? # mswin
236
+ if File.exists?(file)
237
+ File.unlink(file)
220
238
  end
221
239
  end
222
240
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'nokogiri'
4
4
  require 'spreadsheet'
5
+ require 'stringio'
5
6
 
6
7
  module Oddb2xml
7
8
  class Extractor
@@ -134,7 +135,8 @@ module Oddb2xml
134
135
  end
135
136
  end
136
137
  class SwissmedicExtractor < Extractor
137
- def initialize(io, type)
138
+ def initialize(bin, type)
139
+ io = StringIO.new(bin)
138
140
  book = Spreadsheet.open(io)
139
141
  @sheet = book.worksheet(0)
140
142
  @type = type
@@ -201,8 +203,8 @@ module Oddb2xml
201
203
  end
202
204
  end
203
205
  class EphaExtractor < Extractor
204
- def initialize(io)
205
- @io = io
206
+ def initialize(str)
207
+ @io = StringIO.new(str)
206
208
  end
207
209
  def to_arry
208
210
  data = []
@@ -226,8 +228,8 @@ module Oddb2xml
226
228
  end
227
229
  end
228
230
  class YweseeBMExtractor < Extractor
229
- def initialize(io)
230
- @io = io
231
+ def initialize(str)
232
+ @io = StringIO.new(str)
231
233
  end
232
234
  def to_hash
233
235
  data = {}
@@ -1,3 +1,3 @@
1
1
  module Oddb2xml
2
- VERSION = "1.1.5"
2
+ VERSION = "1.1.6"
3
3
  end
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.1.5
4
+ version: 1.1.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-11 00:00:00.000000000 Z
12
+ date: 2013-01-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rubyzip
16
- requirement: &21104340 !ruby/object:Gem::Requirement
16
+ requirement: &12310580 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *21104340
24
+ version_requirements: *12310580
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: archive-tar-minitar
27
- requirement: &21103620 !ruby/object:Gem::Requirement
27
+ requirement: &12310080 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *21103620
35
+ version_requirements: *12310080
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: mechanize
38
- requirement: &21103000 !ruby/object:Gem::Requirement
38
+ requirement: &12309600 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *21103000
46
+ version_requirements: *12309600
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: nokogiri
49
- requirement: &21102480 !ruby/object:Gem::Requirement
49
+ requirement: &12325460 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *21102480
57
+ version_requirements: *12325460
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: savon
60
- requirement: &21101700 !ruby/object:Gem::Requirement
60
+ requirement: &12324940 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '2.0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *21101700
68
+ version_requirements: *12324940
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: spreadsheet
71
- requirement: &21101060 !ruby/object:Gem::Requirement
71
+ requirement: &12324500 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *21101060
79
+ version_requirements: *12324500
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rspec
82
- requirement: &21100460 !ruby/object:Gem::Requirement
82
+ requirement: &12323920 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *21100460
90
+ version_requirements: *12323920
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: webmock
93
- requirement: &21099960 !ruby/object:Gem::Requirement
93
+ requirement: &12323500 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *21099960
101
+ version_requirements: *12323500
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: ZenTest
104
- requirement: &21099480 !ruby/object:Gem::Requirement
104
+ requirement: &12323020 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *21099480
112
+ version_requirements: *12323020
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: hoe
115
- requirement: &21098920 !ruby/object:Gem::Requirement
115
+ requirement: &12322500 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: '3.4'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *21098920
123
+ version_requirements: *12322500
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: rdoc
126
- requirement: &21098500 !ruby/object:Gem::Requirement
126
+ requirement: &12321900 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ! '>='
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *21098500
134
+ version_requirements: *12321900
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: rdoc
137
- requirement: &21097920 !ruby/object:Gem::Requirement
137
+ requirement: &12321240 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ~>
@@ -142,10 +142,10 @@ dependencies:
142
142
  version: '3.10'
143
143
  type: :development
144
144
  prerelease: false
145
- version_requirements: *21097920
145
+ version_requirements: *12321240
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: hoe
148
- requirement: &21097400 !ruby/object:Gem::Requirement
148
+ requirement: &12320800 !ruby/object:Gem::Requirement
149
149
  none: false
150
150
  requirements:
151
151
  - - ~>
@@ -153,7 +153,7 @@ dependencies:
153
153
  version: '2.13'
154
154
  type: :development
155
155
  prerelease: false
156
- version_requirements: *21097400
156
+ version_requirements: *12320800
157
157
  description: oddb2xml creates xml files using swissINDEX, BAG-XML and Swissmedic.
158
158
  email: yasaka@ywesee.com, zdavatz@ywesee.com
159
159
  executables: