oddb2xml 2.1.7 → 2.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/oddb2xml/cli.rb CHANGED
@@ -13,17 +13,17 @@ require 'date' # for today
13
13
  module Oddb2xml
14
14
 
15
15
  class Cli
16
+ attr_reader :options
16
17
  SUBJECTS = %w[product article]
17
18
  ADDITIONS = %w[substance limitation interaction code]
18
19
  OPTIONALS = %w[fi fi_product]
19
- LANGUAGES = %w[DE FR] # EN does not exist
20
20
  def initialize(args)
21
21
  @options = args
22
22
  Oddb2xml.save_options(@options)
23
23
  @mutex = Mutex.new
24
24
  # product
25
- @items = {} # Items from Preparations.xml in BAG
26
- @index = {} # Base index from swissINDEX
25
+ @items = {} # Items from Preparations.xml in BAG, using GTINs as key
26
+ @refdata_types = {} # Base index from refdata
27
27
  @flags = {} # narcotics flag files repo
28
28
  @lppvs = {} # lppv.txt from files repo
29
29
  @infos = {} # [option] FI from SwissmedicInfo
@@ -36,9 +36,6 @@ module Oddb2xml
36
36
  # addres
37
37
  @companies = [] # betrieb
38
38
  @people = [] # medizinalperson
39
- LANGUAGES.each do |lang|
40
- @index[lang] = {}
41
- end
42
39
  @_message = false
43
40
  end
44
41
  def run
@@ -69,14 +66,12 @@ module Oddb2xml
69
66
  threads << download(:bm_update) # oddb2xml_files
70
67
  threads << download(:lppv) # oddb2xml_files
71
68
  threads << download(:bag) # bag.e-mediat
72
- LANGUAGES.each do |lang|
73
- types.each do |type|
74
- threads << download(:index, type, lang) # swissindex
75
- end
69
+ types.each do |type|
70
+ threads << download(:refdata, type) # refdata
76
71
  end
77
72
  end
78
73
  begin
79
- threads.map(&:join)
74
+ # threads.map(&:join) # TODO
80
75
  rescue SystemExit
81
76
  @mutex.synchronize do
82
77
  if @_message
@@ -95,6 +90,7 @@ module Oddb2xml
95
90
  private
96
91
  def build
97
92
  Oddb2xml.log("Start build")
93
+ puts "#{File.basename(__FILE__)}:#{__LINE__}: @refdata_types.keys #{@refdata_types.keys}"
98
94
  begin
99
95
  # require 'pry'; binding.pry
100
96
  @_files = {"calc"=>"oddb_calc.xml"} if @options[:calc] and not @options[:extended]
@@ -109,14 +105,11 @@ module Oddb2xml
109
105
  builder.people = @people
110
106
  else # product
111
107
  if @options[:format] != :dat
112
- index = {}
113
- LANGUAGES.each do |lang|
114
- index[lang] = {} unless index[lang]
115
- types.each do |type|
116
- index[lang].merge!(@index[lang][type]) if @index[lang][type]
117
- end
108
+ refdata = {}
109
+ types.each do |type|
110
+ refdata.merge!(@refdata_types[type]) if @refdata_types[type]
118
111
  end
119
- builder.index = index
112
+ builder.refdata = refdata
120
113
  builder.subject = sbj
121
114
  end
122
115
  # common sources
@@ -136,12 +129,9 @@ module Oddb2xml
136
129
  output = ''
137
130
  if !@options[:address] and (@options[:format] == :dat)
138
131
  types.each do |type|
139
- index = {}
140
- LANGUAGES.each do |lang|
141
- index[lang] = @index[lang][type]
142
- end
132
+ refdata1 = {}
143
133
  _sbj = (type == :pharma ? :dat : :with_migel_dat)
144
- builder.index = index
134
+ builder.refdata = @refdata_types[type]
145
135
  builder.subject = _sbj
146
136
  builder.ean14 = @options[:ean14]
147
137
  if type == :nonpharma
@@ -166,11 +156,11 @@ module Oddb2xml
166
156
  raise Interrupt
167
157
  end
168
158
  end
169
- def download(what, type=nil, lang=nil)
159
+ def download(what, type=nil)
170
160
  case what
171
161
  when :company, :person
172
162
  var = (what == :company ? 'companies' : 'people')
173
- Thread.new do
163
+ begin # instead of Thread.new do
174
164
  downloader = MedregbmDownloader.new(what)
175
165
  str = downloader.download
176
166
  self.instance_variable_set(
@@ -179,7 +169,7 @@ module Oddb2xml
179
169
  )
180
170
  end
181
171
  when :fachinfo
182
- Thread.new do
172
+ begin # instead of Thread.new do
183
173
  downloader = SwissmedicInfoDownloader.new
184
174
  xml = downloader.download
185
175
  @mutex.synchronize do
@@ -190,7 +180,7 @@ module Oddb2xml
190
180
  end
191
181
  when :orphan, :fridge
192
182
  var = what.to_s + 's'
193
- Thread.new do
183
+ begin # instead of Thread.new do
194
184
  downloader = SwissmedicDownloader.new(what)
195
185
  bin = downloader.download
196
186
  self.instance_variable_set(
@@ -200,7 +190,7 @@ module Oddb2xml
200
190
  # Oddb2xml.log("SwissmedicExtractor added #{self.instance_variable_get("@#{var}".intern).size} #{var}. File #{bin} was #{File.size(bin)} bytes")
201
191
  end
202
192
  when :interaction
203
- Thread.new do
193
+ begin # instead of Thread.new do
204
194
  downloader = EphaDownloader.new
205
195
  str = downloader.download
206
196
  @mutex.synchronize do
@@ -209,7 +199,7 @@ module Oddb2xml
209
199
  end
210
200
  end
211
201
  when :migel
212
- Thread.new do
202
+ begin # instead of Thread.new do
213
203
  downloader = MigelDownloader.new
214
204
  bin = downloader.download
215
205
  @mutex.synchronize do
@@ -218,7 +208,7 @@ module Oddb2xml
218
208
  end
219
209
  end
220
210
  when :package
221
- Thread.new do
211
+ begin # instead of Thread.new do
222
212
  downloader = SwissmedicDownloader.new(:package, @options)
223
213
  bin = downloader.download
224
214
  @mutex.synchronize do
@@ -228,7 +218,7 @@ module Oddb2xml
228
218
  end
229
219
  end
230
220
  when :bm_update
231
- Thread.new do
221
+ begin # instead of Thread.new do
232
222
  downloader = BMUpdateDownloader.new
233
223
  str = downloader.download
234
224
  @mutex.synchronize do
@@ -237,7 +227,7 @@ module Oddb2xml
237
227
  end
238
228
  end
239
229
  when :lppv
240
- Thread.new do
230
+ begin # instead of Thread.new do
241
231
  downloader = LppvDownloader.new
242
232
  str = downloader.download
243
233
  @mutex.synchronize do
@@ -246,31 +236,33 @@ module Oddb2xml
246
236
  end
247
237
  end
248
238
  when :bag
249
- Thread.new do
239
+ begin # instead of Thread.new do
250
240
  downloader = BagXmlDownloader.new(@options)
251
241
  xml = downloader.download
252
242
  @mutex.synchronize do
253
243
  hsh = BagXmlExtractor.new(xml).to_hash
254
244
  @items = hsh
255
- Oddb2xml.log("BagXmlDownloader added #{@items.size} items")
245
+ Oddb2xml.log("BagXmlDownloader added #{@items.size} items. #{@items.keys}")
256
246
  end
257
247
  end
258
248
  when :zurrose
259
- Thread.new do
249
+ begin # instead of Thread.new do
260
250
  downloader = ZurroseDownloader.new(@options, @options[:transfer_dat])
261
251
  xml = downloader.download
262
252
  Oddb2xml.log("zurrose xml #{xml.size} bytes")
263
253
  @mutex.synchronize do
264
254
  hsh = ZurroseExtractor.new(xml, @options[:extended]).to_hash
255
+ Oddb2xml.log("zurrose added #{hsh.size} items from xml with #{xml.size} bytes")
265
256
  @infos_zur_rose = hsh
266
- Oddb2xml.log("zurrose added #{@infos_zur_rose.size} items from xml with #{xml.size} bytes")
267
257
  end
268
258
  end
269
- when :index
270
- Thread.new do
271
- downloader = SwissIndexDownloader.new(@options, type, lang)
259
+ when :refdata
260
+ begin # instead of Thread.new do
261
+ downloader = RefdataDownloader.new(@options, type)
272
262
  begin
273
263
  xml = downloader.download
264
+ Oddb2xml.log("refdata #{type} xml #{xml.size} bytes")
265
+ xml
274
266
  rescue SystemExit
275
267
  @mutex.synchronize do
276
268
  unless @_message # hook only one exit
@@ -280,8 +272,9 @@ module Oddb2xml
280
272
  end
281
273
  end
282
274
  @mutex.synchronize do
283
- hsh = SwissIndexExtractor.new(xml, type).to_hash
284
- @index[lang][type] = hsh
275
+ hsh = RefdataExtractor.new(xml, type).to_hash
276
+ @refdata_types[type] = hsh
277
+ Oddb2xml.log("refdata #{type} added #{hsh.size} keys now #{@refdata_types.keys} items from xml with #{xml.size} bytes")
285
278
  end
286
279
  end
287
280
  end
@@ -335,19 +328,16 @@ module Oddb2xml
335
328
  lines << ParseComposition.report
336
329
  end
337
330
  unless @options[:address]
338
- LANGUAGES.each do |lang|
339
- lines << lang
340
- types.each do |type|
341
- if @index[lang][type]
342
- indices = @index[lang][type].values.flatten.length
343
- if type == :nonpharma
344
- migel_xls = @migel.values.compact.select{|m| !m[:pharmacode].empty? }.map{|m| m[:pharmacode] }
345
- nonpharmas = @index[lang][type].keys
346
- indices += (migel_xls - nonpharmas).length # ignore duplicates, null
347
- lines << sprintf("\tNonPharma products: %i", indices)
348
- else
349
- lines << sprintf("\tPharma products: %i", indices)
350
- end
331
+ types.each do |type|
332
+ if @refdata_types[type]
333
+ indices = @refdata_types[type].values.flatten.length
334
+ if type == :nonpharma
335
+ migel_xls = @migel.values.compact.select{|m| !m[:pharmacode].empty? }.map{|m| m[:pharmacode] }
336
+ nonpharmas = @refdata_types[type].keys
337
+ indices += (migel_xls - nonpharmas).length # ignore duplicates, null
338
+ lines << sprintf("\tNonPharma products: %i", indices)
339
+ else
340
+ lines << sprintf("\tPharma products: %i", indices)
351
341
  end
352
342
  end
353
343
  end
@@ -365,7 +355,7 @@ module Oddb2xml
365
355
  end
366
356
  puts lines.join("\n")
367
357
  end
368
- def types # swissindex
358
+ def types # RefData
369
359
  @_types ||=
370
360
  if @options[:nonpharma]
371
361
  [:pharma, :nonpharma]
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require 'net/ntlm/version' # needed to avoid error: uninitialized constant Net::NTLM::VERSION
4
+ require 'rubyntlm'
3
5
  require 'mechanize'
4
6
  require 'zip'
5
7
  require 'savon'
@@ -34,7 +36,7 @@ module Oddb2xml
34
36
  end
35
37
  end
36
38
  class Downloader
37
- attr_reader :type
39
+ attr_reader :type, :agent
38
40
  def initialize(options={}, url=nil)
39
41
  @options = options
40
42
  @url = url
@@ -55,6 +57,7 @@ module Oddb2xml
55
57
  cert_store.add_file(File.expand_path('../../../tools/cacert.pem', __FILE__))
56
58
  @agent.cert_store = cert_store
57
59
  end
60
+ @agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
58
61
  end
59
62
  protected
60
63
  def retrievable?
@@ -133,14 +136,14 @@ module Oddb2xml
133
136
  class BMUpdateDownloader < Downloader
134
137
  include DownloadMethod
135
138
  def download
136
- @url ||= 'https://raw.github.com/zdavatz/oddb2xml_files/master/BM_Update.txt'
139
+ @url ||= 'https://raw.githubusercontent.com/zdavatz/oddb2xml_files/master/BM_Update.txt'
137
140
  download_as('oddb2xml_files_bm_update.txt', 'r')
138
141
  end
139
142
  end
140
143
  class LppvDownloader < Downloader
141
144
  include DownloadMethod
142
145
  def download
143
- @url ||= 'https://raw.github.com/zdavatz/oddb2xml_files/master/LPPV.txt'
146
+ @url ||= 'https://raw.githubusercontent.com/zdavatz/oddb2xml_files/master/LPPV.txt'
144
147
  download_as('oddb2xml_files_lppv.txt', 'r')
145
148
  end
146
149
  end
@@ -203,11 +206,10 @@ module Oddb2xml
203
206
  content
204
207
  end
205
208
  end
206
- class SwissIndexDownloader < Downloader
207
- def initialize(options={}, type=:pharma, lang='DE')
209
+ class RefdataDownloader < Downloader
210
+ def initialize(options={}, type=:pharma)
208
211
  @type = (type == :pharma ? 'Pharma' : 'NonPharma')
209
- @lang = lang
210
- url = "https://index.ws.e-mediat.net/Swissindex/#{@type}/ws_#{@type}_V101.asmx?WSDL"
212
+ url = "http://refdatabase.refdata.ch/Service/Article.asmx?WSDL"
211
213
  super(options, url)
212
214
  end
213
215
  def init
@@ -222,19 +224,21 @@ module Oddb2xml
222
224
  end
223
225
  def download
224
226
  begin
225
- filename = "swissindex_#{@type}_#{@lang}.xml"
226
- file2save = File.join(Downloads, "swissindex_#{@type}_#{@lang}.xml")
227
+ filename = "refdata_#{@type}.xml"
228
+ file2save = File.join(Downloads, "refdata_#{@type}.xml")
229
+ soap = %(<?xml version="1.0" encoding="UTF-8"?>
230
+ <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://refdatabase.refdata.ch/Article_in" xmlns:ns2="http://refdatabase.refdata.ch/">
231
+ <SOAP-ENV:Body>
232
+ <ns2:DownloadArticleInput>
233
+ <ns1:ATYPE>#{@type.upcase}</ns1:ATYPE>
234
+ </ns2:DownloadArticleInput>
235
+ </SOAP-ENV:Body>
236
+ </SOAP-ENV:Envelope>
237
+ </ns1:ATYPE></ns2:DownloadArticleInput></SOAP-ENV:Body>
238
+ )
227
239
  return IO.read(file2save) if Oddb2xml.skip_download? and File.exists?(file2save)
228
240
  FileUtils.rm_f(file2save, :verbose => false)
229
- soap = <<XML
230
- <?xml version="1.0" encoding="utf-8"?>
231
- <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
232
- <soap:Body>
233
- <lang xmlns="http://swissindex.e-mediat.net/Swissindex#{@type}_out_V101">#{@lang}</lang>
234
- </soap:Body>
235
- </soap:Envelope>
236
- XML
237
- response = @client.call(:download_all, :xml => soap)
241
+ response = @client.call(:download, :xml => soap)
238
242
  if response.success?
239
243
  if xml = response.to_xml
240
244
  response = nil # win
@@ -282,7 +286,7 @@ XML
282
286
  begin
283
287
  FileUtils.rm(File.expand_path(file), :verbose => !defined?(RSpec)) if File.exists?(File.expand_path(file))
284
288
  page = @agent.get(@url)
285
- if link_node = page.search(@xpath).first
289
+ if !page.class.is_a?(String) and link_node = page.search(@xpath).first
286
290
  link = Mechanize::Page::Link.new(link_node, @agent, page)
287
291
  response = link.click
288
292
  response.save_as(file)
@@ -8,7 +8,6 @@ require 'csv'
8
8
  require 'oddb2xml/xml_definitions'
9
9
 
10
10
  module Oddb2xml
11
- Strip_For_Sax_Machine = '<?xml version="1.0" encoding="utf-8"?>'+"\n"
12
11
  module TxtExtractorMethods
13
12
  def initialize(str)
14
13
  @io = StringIO.new(str)
@@ -83,8 +82,9 @@ module Oddb2xml
83
82
  phar = pac.Pharmacode
84
83
  phar = correct_code(phar.to_s, 7)
85
84
  ean = pac.GTIN
85
+ binding.pry if pac.GTIN.to_s.eql? '7680324750190' # lansoyl
86
86
  search_key = phar.to_i != 0 ? phar : ean
87
- # as common key with swissINDEX
87
+ # as common key with RefData Pharma/NonPharma data
88
88
  item[:pharmacodes] << phar
89
89
  # packages
90
90
  exf = {:price => '', :valid_date => '', :price_code => ''}
@@ -178,38 +178,34 @@ module Oddb2xml
178
178
  end
179
179
  end
180
180
 
181
- class SwissIndexExtractor < Extractor
181
+ class RefdataExtractor < Extractor
182
182
  def initialize(xml, type)
183
183
  @type = (type == :pharma ? 'PHARMA' : 'NONPHARMA')
184
184
  super(xml)
185
185
  end
186
186
  def to_hash
187
187
  data = {}
188
- result = PharmaEntry.parse(@xml.sub(Strip_For_Sax_Machine, ''), :lazy => true)
189
- items = result.PHARMA.ITEM
188
+ result = SwissRegArticleEntry.parse(@xml.sub(Strip_For_Sax_Machine, ''), :lazy => true)
189
+ items = result.ARTICLE.ITEM
190
190
  items.each do |pac|
191
191
  item = {}
192
192
  item[:refdata] = true
193
- item[:_type] = @type.downcase.intern
193
+ item[:_type] = (typ = pac.ATYPE.downcase.to_sym) ? typ: ''
194
194
  item[:ean] = (gtin = pac.GTIN) ? gtin: ''
195
195
  item[:pharmacode] = (phar = pac.PHAR) ? phar: ''
196
- item[:stat_date] = (date = pac.SDATE) ? date: ''
197
- item[:lang] = (lang = pac.LANG) ? lang: ''
198
- item[:desc] = (dscr = pac.DSCR) ? dscr: ''
196
+ item[:last_change] = (date = Time.parse(pac.DT).to_s) ? date: '' # Date and time of last data change
197
+ item[:desc_de] = (dscr = pac.NAME_DE) ? dscr: ''
198
+ item[:desc_fr] = (dscr = pac.NAME_FR) ? dscr: ''
199
199
  item[:atc_code] = (code = pac.ATC) ? code.to_s : ''
200
- # as quantity text
201
- item[:additional_desc] = (dscr = pac.ADDSCR) ? dscr: ''
202
- if comp = pac.COMP
203
- item[:company_name] = (nam = comp.NAME) ? nam: ''
204
- item[:company_ean] = (gln = comp.GLN) ? gln: ''
205
- end
200
+ item[:company_name] = (nam = pac.AUTH_HOLDER_NAME) ? nam: ''
201
+ item[:company_ean] = (gln = pac.AUTH_HOLDER_GLN) ? gln: ''
206
202
  unless item[:pharmacode].empty?
207
203
  item[:pharmacode] = correct_code(item[:pharmacode].to_s, 7)
208
204
  unless data[item[:pharmacode]] # pharmacode => GTINs
209
- data[item[:pharmacode]] = []
205
+ data[item[:ean]] = []
210
206
  end
211
- data[item[:pharmacode]] << item
212
207
  end
208
+ data[item[:ean]] = item
213
209
  end
214
210
  data
215
211
  end
@@ -327,13 +323,15 @@ module Oddb2xml
327
323
  @sheet.each_with_index do |row, i|
328
324
  next if i.zero?
329
325
  phar = correct_code(row[1].to_s.gsub(/[^0-9]/, ''), 7)
330
- data[phar] = {
326
+ ean = row[0].to_i.to_s
327
+ ean = '9999'+phar+'99' unless ean.length == 13
328
+ data[ean] = {
331
329
  :refdata => true,
332
- :ean => row[0].to_i.to_s,
330
+ :ean => ean,
333
331
  :pharmacode => phar,
334
332
  :desc_de => row[3],
335
333
  :desc_fr => row[4],
336
- :additional_desc => row[5], # quantity
334
+ :quantity => row[5], # quantity
337
335
  :company_name => row[6],
338
336
  :company_ean => row[7].to_i.to_s,
339
337
  }
@@ -497,7 +495,7 @@ module Oddb2xml
497
495
  :ean => ean13,
498
496
  :vat => line[96],
499
497
  :description => line[10..59].sub(/\s+$/, ''),
500
- :additional_desc => '',
498
+ :quantity => '',
501
499
  :pharmacode => pharma_code,
502
500
  :price => sprintf("%.2f", line[60,6].gsub(/(\d{2})$/, '.\1').to_f),
503
501
  :pub_price => sprintf("%.2f", line[66,6].gsub(/(\d{2})$/, '.\1').to_f),
data/lib/oddb2xml/util.rb CHANGED
@@ -33,7 +33,7 @@ module Oddb2xml
33
33
  end
34
34
 
35
35
  def Oddb2xml.log(msg)
36
- return unless @options[:log]
36
+ # return unless @options[:log]
37
37
  $stdout.puts "#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}: #{msg}"
38
38
  $stdout.flush
39
39
  end
@@ -47,6 +47,7 @@ module Oddb2xml
47
47
  end
48
48
 
49
49
  def Oddb2xml.skip_download(file)
50
+ return false if defined?(VCR)
50
51
  dest = "#{Downloads}/#{File.basename(file)}"
51
52
  if File.exists?(dest)
52
53
  FileUtils.cp(dest, file, :verbose => false, :preserve => true) unless File.expand_path(file).eql?(dest)
@@ -1,3 +1,3 @@
1
1
  module Oddb2xml
2
- VERSION = "2.1.7"
2
+ VERSION = "2.1.8"
3
3
  end
@@ -3,6 +3,8 @@
3
3
 
4
4
  require 'sax-machine'
5
5
 
6
+ Strip_For_Sax_Machine = '<?xml version="1.0" encoding="utf-8"?>'+"\n"
7
+
6
8
  class PriceElement
7
9
  include SAXMachine
8
10
  element :Price
@@ -210,18 +212,6 @@ class ItemContent
210
212
  element :COMP, :class => CompElement
211
213
  end
212
214
 
213
- class PharmaContent
214
- include SAXMachine
215
- attribute :CREATION_DATETIME
216
- elements :ITEM, :class => ItemContent
217
- end
218
-
219
- class PharmaEntry
220
- include SAXMachine
221
- element :CREATION_DATETIME
222
- element :PHARMA, :class => PharmaContent
223
- end
224
-
225
215
  class MedicalInformationContent
226
216
  include SAXMachine
227
217
  attribute :type
@@ -230,6 +220,7 @@ class MedicalInformationContent
230
220
  element :title
231
221
  element :authHolder
232
222
  element :authNrs
223
+ element :authNrs
233
224
  element :style
234
225
  element :content
235
226
  end
@@ -249,3 +240,29 @@ class MedicalInformationsEntry
249
240
  element :medicalInformations, :class => MedicalInformationsContent
250
241
  end
251
242
 
243
+ class SwissRegItemContentContent
244
+ include SAXMachine
245
+ attribute :DT
246
+ element :ATYPE
247
+ element :GTIN
248
+ element :PHAR
249
+ element :SWMC_AUTHNR
250
+ element :NAME_DE
251
+ element :NAME_FR
252
+ element :ADDSCR
253
+ element :ATC
254
+ element :AUTH_HOLDER_NAME
255
+ element :AUTH_HOLDER_GLN
256
+ end
257
+
258
+ class SwissRegArticleContent
259
+ include SAXMachine
260
+ attribute :CREATION_DATETIME
261
+ elements :ITEM, :class => SwissRegItemContentContent
262
+ end
263
+
264
+ class SwissRegArticleEntry
265
+ include SAXMachine
266
+ element :CREATION_DATETIME
267
+ element :ARTICLE, :class => SwissRegArticleContent
268
+ end
data/oddb2xml.gemspec CHANGED
@@ -20,20 +20,24 @@ Gem::Specification.new do |spec|
20
20
  # We fix the version of the spec to newer versions only in the third position
21
21
  # hoping that these version fix only security/severe bugs
22
22
  # Consulted the Gemfile.lock to get
23
- spec.add_dependency 'rubyzip', '~> 1.1.3'
24
- spec.add_dependency 'archive-tar-minitar', '~> 0.5.2'
25
- spec.add_dependency 'mechanize', '~> 2.5.1'
26
- spec.add_dependency 'nokogiri'
27
- spec.add_dependency 'savon', '~> 2.4.0'
28
- spec.add_dependency 'spreadsheet', '~> 1.0.0'
29
- spec.add_dependency 'rubyXL', '~> 3.3.1'
30
- spec.add_dependency 'sax-machine', '~> 0.1.0'
31
- spec.add_dependency 'parslet', '~> 1.7.0'
32
-
23
+ spec.add_dependency 'rubyzip'#, '~> 1.1.3'
24
+ spec.add_dependency 'archive-tar-minitar'#, '~> 0.5.2'
25
+ spec.add_dependency 'mechanize'#, '~> 2.5.1'
26
+ spec.add_dependency 'nokogiri'#, '~> 1.6.0'
27
+ spec.add_dependency 'savon'#, '~> 2.11.0'
28
+ spec.add_dependency 'spreadsheet'#, '~> 1.0.0'
29
+ spec.add_dependency 'rubyXL'#, '~> 3.3.1'
30
+ spec.add_dependency 'sax-machine'#, '~> 0.1.0'
31
+ spec.add_dependency 'parslet'#, '~> 1.7.0'
32
+ spec.add_dependency 'rubyntlm'#, '>= 0.3.2'
33
+ spec.add_dependency 'multi_json'#, '>= 0.3.2'
34
+
33
35
  spec.add_development_dependency "bundler"
34
36
  spec.add_development_dependency "rake"
35
37
  spec.add_development_dependency "rspec"
36
38
  spec.add_development_dependency "webmock"
37
39
  spec.add_development_dependency "rdoc"
40
+ spec.add_development_dependency "vcr"
41
+ spec.add_development_dependency "timecop"
38
42
  end
39
43