Sha256: a67199b1187778a70b8f6ef32c23abcf8227ec6d18d50406b462acc82f7c629d

Contents?: true

Size: 1.02 KB

Versions: 5

Compression:

Stored size: 1.02 KB

Contents

class Karousel
  class Job
    STATUS = { 1 => :init, 2 => :sent, 3 => :success, 4 => :failure }
    attr_reader :client_job

    def initialize(client_job)
      raise TypeError.new("Unknown client job type") unless client_job.is_a?(Karousel::ClientJob)
      @client_job = client_job
      @invert_status = STATUS.invert
    end

    def status
      @status = STATUS[@client_job.status]
      raise TypeError.new("status must be an integer between 1 and 4") unless @status
      @status
    end

    def status= (new_status)
      new_status = @invert_status[new_status]
      raise TypeError.new("Unknown status") unless new_status
      @client_job.status = new_status
    end

    def send
      is_ok = @client_job.send
      self.status = is_ok ? :sent : :failure 
      is_ok
    end

    def finished?
      is_ok = @client_job.finished?
      self.status = is_ok ? :success : :failure
      is_ok
    end

    def process
      is_ok = @client_job.process
      self.status = is_ok ? :success : :failure
      is_ok
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
karousel-0.9.12 lib/karousel/job.rb
karousel-0.9.11 lib/karousel/job.rb
karousel-0.9.10 lib/karousel/job.rb
karousel-0.9.9 lib/karousel/job.rb
karousel-0.9.8 lib/karousel/job.rb