Class: MDQT::Client::MetadataFile

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

Instance Method Summary collapse

Constructor Details

#initialize(filename, options = {}) ⇒ MetadataFile

Returns a new instance of MetadataFile.



8
9
10
11
12
13
14
15
16
# File 'lib/mdqt/client/metadata_file.rb', line 8

def initialize(filename, options = {})
  @filename = filename
  @identifier = nil
  @data = nil
  @expires = nil
  @etag = nil
  @last_modified = nil
  @explanation = {}
end

Instance Method Details

#canonical_filenameObject



73
74
75
76
77
78
79
80
81
# File 'lib/mdqt/client/metadata_file.rb', line 73

def canonical_filename
  if identifier.empty?
    @filename = "aggregate-#{Digest::SHA1.hexdigest(@service)}.xml"
  else
    @filename ||= identifier.start_with?("{sha1}") ?
                      "#{@identifier.gsub("{sha1}","")}.xml" :
                      "#{Digest::SHA1.hexdigest(@identifier)}.xml"
  end
end

#dataObject



26
27
28
# File 'lib/mdqt/client/metadata_file.rb', line 26

def data
  @data ||= File.read(filename)
end

#etagObject



42
43
44
# File 'lib/mdqt/client/metadata_file.rb', line 42

def etag
  @etag
end

#expiresObject



38
39
40
# File 'lib/mdqt/client/metadata_file.rb', line 38

def expires
  @expires
end

#filenameObject



18
19
20
# File 'lib/mdqt/client/metadata_file.rb', line 18

def filename
  @filename
end

#identifierObject



22
23
24
# File 'lib/mdqt/client/metadata_file.rb', line 22

def identifier
  @identifier
end

#last_modifiedObject



46
47
48
# File 'lib/mdqt/client/metadata_file.rb', line 46

def last_modified
  @last_modified
end

#ok?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/mdqt/client/metadata_file.rb', line 50

def ok?
  @ok
end

#readable?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/mdqt/client/metadata_file.rb', line 30

def readable?
  File.readable?(filename)
end

#signed?Boolean

Returns:

  • (Boolean)


54
55
56
# File 'lib/mdqt/client/metadata_file.rb', line 54

def signed?
  @data.include? "Signature" # This is... not great
end

#typeObject



34
35
36
# File 'lib/mdqt/client/metadata_file.rb', line 34

def type
  @type
end

#valid?Boolean

Returns:

  • (Boolean)


63
64
65
66
# File 'lib/mdqt/client/metadata_file.rb', line 63

def valid?
  validator = MetadataValidator.new
  validator.valid?(self)
end

#validation_errorObject



68
69
70
71
# File 'lib/mdqt/client/metadata_file.rb', line 68

def validation_error
  validator = MetadataValidator.new
  validator.validation_error(self)
end

#verified_signature?(certs = [], _ = {}) ⇒ Boolean

Returns:

  • (Boolean)


58
59
60
61
# File 'lib/mdqt/client/metadata_file.rb', line 58

def verified_signature?(certs = [], _ = {})
  validator = MetadataValidator.new(certs: [certs].flatten)
  validator.verified_signature?(self)
end