Sha256: b2f006da0b645592791f731d8461e6a8bf58b0c50673a51c55185871fdeb26d1

Contents?: true

Size: 980 Bytes

Versions: 3

Compression:

Stored size: 980 Bytes

Contents

require 'openscap_parser/datastream_file'
require 'openscap_parser/tailoring_file'

module Proxy
  module OpenSCAP
    class ProfilesParser
      def profiles(file_type, scap_file)
        profiles = []
        error_msg = 'Failed to parse profiles'
        begin
          case file_type
          when 'scap_content'
            profiles = ::OpenscapParser::DatastreamFile.new(scap_file).benchmark.profiles
          when 'tailoring_file'
            profiles = ::OpenscapParser::TailoringFile.new(scap_file).tailoring.profiles
          else
            raise OpenSCAPException, "Unknown file type, expected 'scap_content' or 'tailoring_file'"
          end
        rescue Nokogiri::XML::SyntaxError
          raise OpenSCAPException, error_msg
        end

        raise OpenSCAPException, error_msg if profiles.empty?

        profiles.reduce({}) do |memo, profile|
          memo.tap { |acc| acc[profile.id] = profile.title }
        end.to_json
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
smart_proxy_openscap-0.12.0 lib/smart_proxy_openscap/profiles_parser.rb
smart_proxy_openscap-0.11.1 lib/smart_proxy_openscap/profiles_parser.rb
smart_proxy_openscap-0.11.0 lib/smart_proxy_openscap/profiles_parser.rb