Sha256: 2901f5439053aa47d29ded6d41172cb245c249ced61dfb69e376f9d6094c3f33

Contents?: true

Size: 1.25 KB

Versions: 3

Compression:

Stored size: 1.25 KB

Contents

module Ecoportal
  module API
    class V1
      class Job
        class Status
          attr_reader :id, :progress

          def initialize(id, complete, errored, progress)
            @id       = id
            @complete = complete
            @errored  = errored
            @progress = progress || 0
          end

          def started?
            progress.positive?
          end

          def progressing?(prev)
            progress_increase(prev).positive?
          end

          def complete?(total = nil)
            return @complete if total.nil?

            progress >= total
          end

          def pending(total)
            return 1 unless total
            return 0 if total <= progress

            total - progress
          end

          def progress_increase(prev = 0)
            prev   = prev.progress if prev.is_a?(self.class)
            prev ||= 0
            progress - prev
          end

          def errored?
            @errored
          end

          def to_s
            msg = complete? ? "Completed" : "In progress"
            msg = "Errored" if errored?
            msg << " with #{progress} done."
            msg
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ecoportal-api-0.10.8 lib/ecoportal/api/v1/job/status.rb
ecoportal-api-0.10.7 lib/ecoportal/api/v1/job/status.rb
ecoportal-api-0.10.6 lib/ecoportal/api/v1/job/status.rb