class Proxy::OpenSCAP::OvalReportParser
Public Instance Methods
parse_cves(report_data)
click to toggle source
# File lib/smart_proxy_openscap/oval_report_parser.rb, line 8 def parse_cves(report_data) report = oval_report report_data results = report.definition_results.reduce({}) do |memo, result| memo.tap { |acc| acc[result.definition_id] = parse_cve_res result } end report.definitions.map do |definition| results[definition.id].merge(parse_cve_def definition) end end
Private Instance Methods
decompress(report_data)
click to toggle source
# File lib/smart_proxy_openscap/oval_report_parser.rb, line 38 def decompress(report_data) begin file = Tempfile.new file.write report_data file.rewind decompressed = `bunzip2 -dc #{file.path}` rescue => e logger.error e raise Proxy::OpenSCAP::ReportDecompressError, "Failed to decompress received report bzip, cause: #{e.message}" ensure file.close file.unlink end decompressed end
oval_report(report_data)
click to toggle source
# File lib/smart_proxy_openscap/oval_report_parser.rb, line 33 def oval_report(report_data) decompressed = decompress report_data ::OpenscapParser::OvalReport.new(decompressed) end
parse_cve_def(definition)
click to toggle source
# File lib/smart_proxy_openscap/oval_report_parser.rb, line 21 def parse_cve_def(definition) refs = definition.references.reduce([]) do |memo, ref| memo.tap { |acc| acc << { :ref_id => ref.ref_id, :ref_url => ref.ref_url } } end { :references => refs, :definition_id => definition.id } end
parse_cve_res(result)
click to toggle source
# File lib/smart_proxy_openscap/oval_report_parser.rb, line 29 def parse_cve_res(result) { :result => result.result } end