Sha256: 5045972e569b40d2cf2eb34a297b4a78c3f71ffd1584710115c0c9a2adb6185b

Contents?: true

Size: 989 Bytes

Versions: 5

Compression:

Stored size: 989 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?

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

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
smart_proxy_openscap-0.9.2 lib/smart_proxy_openscap/profiles_parser.rb
smart_proxy_openscap-0.9.1 lib/smart_proxy_openscap/profiles_parser.rb
smart_proxy_openscap-0.9.0 lib/smart_proxy_openscap/profiles_parser.rb
smart_proxy_openscap-0.8.1 lib/smart_proxy_openscap/profiles_parser.rb
smart_proxy_openscap-0.8.0 lib/smart_proxy_openscap/profiles_parser.rb