Class: MDQT::Client::MetadataValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/mdqt/client/metadata_validator.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ MetadataValidator

Returns a new instance of MetadataValidator.



6
7
8
# File 'lib/mdqt/client/metadata_validator.rb', line 6

def initialize(options = {})
  @certs = options[:certs] || []
end

Instance Method Details

#certificatesObject



45
46
47
# File 'lib/mdqt/client/metadata_validator.rb', line 45

def certificates
  @certificates ||= normalize_certs(certs)
end

#certificates?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/mdqt/client/metadata_validator.rb', line 41

def certificates?
  certificates.present?
end

#valid?(response) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
24
25
26
27
28
29
# File 'lib/mdqt/client/metadata_validator.rb', line 21

def valid?(response)
  begin
    errors = schema.validate(Nokogiri::XML(response.data)  { |config| config.strict } )
    return false unless errors.length.zero?
    true
  rescue => oops
    false
  end
end

#validation_error(response) ⇒ Object



31
32
33
34
35
36
37
38
39
# File 'lib/mdqt/client/metadata_validator.rb', line 31

def validation_error(response)
  begin
    errors = schema.validate(Nokogiri::XML(response.data)  { |config| config.strict } )
    return nil if errors.empty?
    errors.join("\n")
  rescue => oops
    return "Invalid XML! #{oops.to_s}"
  end
end

#verified_signature?(response) ⇒ Boolean

Returns:

  • (Boolean)


10
11
12
13
14
15
16
17
18
19
# File 'lib/mdqt/client/metadata_validator.rb', line 10

def verified_signature?(response)
  begin
    signed_document = Xmldsig::SignedDocument.new(response.data)
    return true if certificates.any? {|c| signed_document.validate(c)}
    false
  rescue => oops
    STDERR.puts oops
    false
  end
end