Sha256: f8d86c3470a2bfa830eb0cd94e1605485a363cb1df0f0704e5f6914172e572c3

Contents?: true

Size: 1.31 KB

Versions: 5

Compression:

Stored size: 1.31 KB

Contents

require "date"

module Duracloud
  class BitIntegrityReport
    include TSV

    SUCCESS = "SUCCESS".freeze
    FAILURE = "FAILURE".freeze

    COMPLETION_DATE_HEADER = "Bit-Integrity-Report-Completion-Date".freeze
    RESULT_HEADER          = "Bit-Integrity-Report-Result".freeze

    attr_reader :space_id, :store_id

    def initialize(space_id, store_id = nil)
      @space_id = space_id
      @store_id = store_id
      @report, @properties = nil, nil
    end

    def tsv
      report.body
    end

    def completion_date
      DateTime.parse(properties[COMPLETION_DATE_HEADER].first)
    end

    def result
      properties[RESULT_HEADER].first
    end

    def success?
      result == SUCCESS
    end

    def report
      @report ||= fetch_report
    end

    def report_loaded?
      !@report.nil?
    end

    def properties
      @properties ||= fetch_properties
    end

    private

    def fetch_report
      reset_properties
      Client.get_bit_integrity_report(space_id, **query)
    end

    def reset_properties
      @properties = nil
    end

    def fetch_properties
      if report_loaded?
        report.headers
      else
        response = Client.get_bit_integrity_report_properties(space_id, **query)
        response.headers
      end
    end

    def query
      { storeID: store_id }
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
duracloud-client-0.2.0 lib/duracloud/bit_integrity_report.rb
duracloud-client-0.1.5 lib/duracloud/bit_integrity_report.rb
duracloud-client-0.1.4 lib/duracloud/bit_integrity_report.rb
duracloud-client-0.1.3 lib/duracloud/bit_integrity_report.rb
duracloud-client-0.1.2 lib/duracloud/bit_integrity_report.rb