Class: MDQT::Client::MetadataFile
- Inherits:
-
Object
- Object
- MDQT::Client::MetadataFile
- Defined in:
- lib/mdqt/client/metadata_file.rb
Instance Method Summary collapse
- #aggregate? ⇒ Boolean
- #basename ⇒ Object
- #canonical_filename ⇒ Object
- #data ⇒ Object
- #entity_id ⇒ Object
- #entity_ids ⇒ Object
- #etag ⇒ Object
- #expires ⇒ Object
- #filename ⇒ Object
- #identifier ⇒ Object
-
#initialize(filename, options = {}) ⇒ MetadataFile
constructor
A new instance of MetadataFile.
- #last_modified ⇒ Object
- #linkname ⇒ Object
- #ok? ⇒ Boolean
- #readable? ⇒ Boolean
- #signed? ⇒ Boolean
- #symlink? ⇒ Boolean
- #turd? ⇒ Boolean
- #type ⇒ Object
- #valid? ⇒ Boolean
- #validation_error ⇒ Object
- #verified_signature?(certs = [], _ = {}) ⇒ Boolean
Constructor Details
#initialize(filename, options = {}) ⇒ MetadataFile
Returns a new instance of MetadataFile.
8 9 10 11 12 13 14 15 |
# File 'lib/mdqt/client/metadata_file.rb', line 8 def initialize(filename, = {}) @filename = File.absolute_path(filename) @data = nil @expires = nil @etag = nil @last_modified = nil @explanation = {} end |
Instance Method Details
#aggregate? ⇒ Boolean
56 57 58 |
# File 'lib/mdqt/client/metadata_file.rb', line 56 def aggregate? type == :aggregate end |
#basename ⇒ Object
21 22 23 |
# File 'lib/mdqt/client/metadata_file.rb', line 21 def basename File.basename(filename) end |
#canonical_filename ⇒ Object
95 96 97 98 99 100 101 102 103 |
# File 'lib/mdqt/client/metadata_file.rb', line 95 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 |
#data ⇒ Object
38 39 40 |
# File 'lib/mdqt/client/metadata_file.rb', line 38 def data @data ||= File.read(filename) end |
#entity_id ⇒ Object
29 30 31 32 |
# File 'lib/mdqt/client/metadata_file.rb', line 29 def entity_id raise "Incorrect metadata file type - aggregate" if aggregate? @entity_id ||= extract_entity_id end |
#entity_ids ⇒ Object
34 35 36 |
# File 'lib/mdqt/client/metadata_file.rb', line 34 def entity_ids @entity_ids ||= extract_entity_ids end |
#etag ⇒ Object
64 65 66 |
# File 'lib/mdqt/client/metadata_file.rb', line 64 def etag @etag end |
#expires ⇒ Object
60 61 62 |
# File 'lib/mdqt/client/metadata_file.rb', line 60 def expires @expires end |
#filename ⇒ Object
17 18 19 |
# File 'lib/mdqt/client/metadata_file.rb', line 17 def filename @filename end |
#identifier ⇒ Object
25 26 27 |
# File 'lib/mdqt/client/metadata_file.rb', line 25 def identifier entity_id end |
#last_modified ⇒ Object
68 69 70 |
# File 'lib/mdqt/client/metadata_file.rb', line 68 def last_modified @last_modified end |
#linkname ⇒ Object
105 106 107 108 109 110 111 |
# File 'lib/mdqt/client/metadata_file.rb', line 105 def linkname if aggregate? raise "Not supported for aggregates" else "#{Digest::SHA1.hexdigest(entity_id)}.xml" end end |
#ok? ⇒ Boolean
72 73 74 |
# File 'lib/mdqt/client/metadata_file.rb', line 72 def ok? @ok end |
#readable? ⇒ Boolean
42 43 44 |
# File 'lib/mdqt/client/metadata_file.rb', line 42 def readable? File.readable?(filename) end |
#signed? ⇒ Boolean
76 77 78 |
# File 'lib/mdqt/client/metadata_file.rb', line 76 def signed? @data.include? "Signature" # This is... not great end |
#symlink? ⇒ Boolean
113 114 115 |
# File 'lib/mdqt/client/metadata_file.rb', line 113 def symlink? File.symlink?(filename) end |
#turd? ⇒ Boolean
46 47 48 49 50 |
# File 'lib/mdqt/client/metadata_file.rb', line 46 def turd? return true if basename.end_with?("~") return true if basename.end_with?(".bak") false end |
#type ⇒ Object
52 53 54 |
# File 'lib/mdqt/client/metadata_file.rb', line 52 def type @type ||= calculate_type end |
#valid? ⇒ Boolean
85 86 87 88 |
# File 'lib/mdqt/client/metadata_file.rb', line 85 def valid? validator = MetadataValidator.new validator.valid?(self) end |
#validation_error ⇒ Object
90 91 92 93 |
# File 'lib/mdqt/client/metadata_file.rb', line 90 def validation_error validator = MetadataValidator.new validator.validation_error(self) end |
#verified_signature?(certs = [], _ = {}) ⇒ Boolean
80 81 82 83 |
# File 'lib/mdqt/client/metadata_file.rb', line 80 def verified_signature?(certs = [], _ = {}) validator = MetadataValidator.new(certs: [certs].flatten) validator.verified_signature?(self) end |