Sha256: a08029054bdbab8c99e13a84a749f6d640a6d2ffa33e95e132edd36fff220051

Contents?: true

Size: 1.6 KB

Versions: 1

Compression:

Stored size: 1.6 KB

Contents

module MDQT
  class Client

    class MetadataFile

      require 'digest'

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

      def filename
        @filename
      end

      def identifier
        @identifier
      end

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

      def readable?
        File.readable?(filename)
      end

      def type
        @type
      end

      def expires
        @expires
      end

      def etag
        @etag
      end

      def last_modified
        @last_modified
      end

      def ok?
        @ok
      end

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

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

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

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

      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

      private

    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mdqt-0.4.0 lib/mdqt/client/metadata_file.rb