Sha256: 54349dc06d0735a025c69bf2796bba858164c92115e7e0766fb9d28b68eadb6b

Contents?: true

Size: 1.37 KB

Versions: 4

Compression:

Stored size: 1.37 KB

Contents

module IronMQ
  class Queues

    attr_accessor :client

    def initialize(client)
      @client = client
    end

    def path(options={})
      path = "projects/#{@client.project_id}/queues"
    end

    def list(options={})
      ret = []
      r1 = @client.get("#{path(options)}", options)
      #p r1
      res = @client.parse_response(r1)
      res.each do |q|
        #p q
        q = Queue.new(self, q)
        ret << q
      end
      ret
    end

    # options:
    #  :name => can specify an alternative queue name
    def get(options={})
      res = @client.parse_response(@client.get("#{path(options)}/#{options[:name]}"))
      return Queue.new(self, res)
    end


  end

  class Queue

    def initialize(queues, res)
      @queues = queues
      @data = res
    end

    def raw
      @data
    end

    def [](key)
      raw[key]
    end

    def id
      raw["id"]
    end

    def name
      raw["name"]
    end

    def size
      return raw["size"] if raw["size"]
      return @size if @size
      q = @queues.get(:name=>name)
      @size = q.size
      @size
    end

    def total_messages
      return raw["total_messages"] if raw["total_messages"]
      return @total_messages if @total_messages
      q = @queues.get(:name=>name)
      @total_messages = q.total_messages
      @total_messages
    end

    # def delete
    # @messages.delete(self.id)
    # end
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
iron_mq-1.7.3 lib/iron_mq/queues.rb
iron_mq-1.7.2 lib/iron_mq/queues.rb
iron_mq-1.7.1 lib/iron_mq/queues.rb
iron_mq-1.7.0 lib/iron_mq/queues.rb