lib/oddb2xml/util.rb in oddb2xml-2.2.3 vs lib/oddb2xml/util.rb in oddb2xml-2.2.4
- old
+ new
@@ -1,5 +1,6 @@
+# encoding: utf-8
require 'open-uri'
module Oddb2xml
def Oddb2xml.calc_checksum(str)
str = str.strip
sum = 0
@@ -72,11 +73,11 @@
row = sheet[4] # Headers are found at row 4
error_2015 = nil
COLUMNS_JULY_2015.each{
|key, value|
- header_name = row[COLUMNS_JULY_2015.keys.index(key)].value
+ header_name = row[COLUMNS_JULY_2015.keys.index(key)].value.to_s
unless value.match(header_name)
puts "#{__LINE__}: #{key} -> #{COLUMNS_JULY_2015.keys.index(key)} #{value}\nbut was #{header_name}" if $VERBOSE
error_2015 = "Packungen.xlslx_has_unexpected_column_#{COLUMNS_JULY_2015.keys.index(key)}_#{key}_#{value.to_s}_but_was_#{header_name}"
break
end
@@ -108,6 +109,33 @@
:indication_sequence => /Anwendungsgebiet Dosisstärke/i,
:gen_production => /Gentechnisch hergestellte Wirkstoffe/i, # column-nr 20
:insulin_category => /Kategorie bei Insulinen/i,
:drug_index => /Verz. bei betäubunsmittel-haltigen Präparaten/i,
}
+
+ def Oddb2xml.add_hash(string)
+ doc = Nokogiri::XML.parse(string)
+ nr = 0
+ doc.root.elements.each do |node|
+ nr += 1
+ next if node.name.eql?('RESULT')
+ node['SHA256'] = Digest::SHA256.hexdigest node.text
+ end
+ doc.to_xml
+ end
+
+ def Oddb2xml.verify_sha256(file)
+ f = File.open(file)
+ doc = Nokogiri::XML(f)
+ nr = 0
+ doc.root.elements.each do |node|
+ nr += 1
+ next if node.name.eql?('RESULT')
+ sha256 = Digest::SHA256.hexdigest node.text
+ unless node['SHA256'].eql?(sha256)
+ puts "Verifiying #{node['SHA256']} != expectd #{sha256} against node #{node.text} failed"
+ exit (3)
+ end
+ end
+ return true
+ end
end