# File lib/openscap/source.rb, line 18 def initialize(param) case param when nil raise OpenSCAPError, 'No filename specified!' when String @raw = OpenSCAP.oscap_source_new_from_file(param) when Hash @raw = create_from_memory param when FFI::Pointer @raw = param else raise OpenSCAP::OpenSCAPError, "Cannot initialize #{self.class.name} with '#{param}'" end OpenSCAP.raise! if @raw.null? end
# File lib/openscap/source.rb, line 49 def destroy OpenSCAP.oscap_source_free(@raw) @raw = nil end
# File lib/openscap/source.rb, line 45 def save(filepath = nil) OpenSCAP.raise! unless OpenSCAP.oscap_source_save_as(@raw, filepath).zero? end
# File lib/openscap/source.rb, line 34 def type OpenSCAP.oscap_document_type_to_string(OpenSCAP.oscap_source_get_scap_type(@raw)) end
# File lib/openscap/source.rb, line 38 def validate! e = FFI::MemoryPointer.new(:char, 4096) unless OpenSCAP.oscap_source_validate(@raw, XmlReporterCallback, e).zero? OpenSCAP.raise! e.read_string end end
# File lib/openscap/source.rb, line 56 def create_from_memory(param) param[:length] = param[:content].length unless param[:length] buf = FFI::MemoryPointer.new(:char, param[:length]) buf.put_bytes(0, param[:content]) OpenSCAP.oscap_source_new_from_memory param[:content], param[:length], param[:path] end