Class: CloudQueues::Claim

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/cloud-queues/claim.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(queue, id, msgs) ⇒ Claim

Returns a new instance of Claim.



9
10
11
12
13
14
15
16
17
18
# File 'lib/cloud-queues/claim.rb', line 9

def initialize(queue, id, msgs)
  @client = queue.client
  @queue = queue.name
  @id = id

  # request the messages if we don't already have them
  @messages = msgs || messages

  @default_ttl = 43200 # 12 hours, server max
end

Instance Attribute Details

#default_ttlObject

Returns the value of attribute default_ttl.



5
6
7
# File 'lib/cloud-queues/claim.rb', line 5

def default_ttl
  @default_ttl
end

#idObject (readonly)

Returns the value of attribute id.



7
8
9
# File 'lib/cloud-queues/claim.rb', line 7

def id
  @id
end

Instance Method Details

#[](index) ⇒ Object



28
29
30
# File 'lib/cloud-queues/claim.rb', line 28

def [](index)
  @messages[index] rescue messages[index]
end

#ageObject



51
# File 'lib/cloud-queues/claim.rb', line 51

def age; refresh["age"]; end

#deleteObject Also known as: release



42
43
44
# File 'lib/cloud-queues/claim.rb', line 42

def delete
  @client.request(method: :delete, path: path, expects: 204) && true
end

#each(&block) ⇒ Object



24
25
26
# File 'lib/cloud-queues/claim.rb', line 24

def each(&block)
  @messages.each(&block)
end

#messagesObject



32
33
34
# File 'lib/cloud-queues/claim.rb', line 32

def messages
  @messages = process_messages(refresh)
end

#pathObject



47
48
49
# File 'lib/cloud-queues/claim.rb', line 47

def path
  "/queues/#{@queue}/claims/#{@id}"
end

#queueObject



20
21
22
# File 'lib/cloud-queues/claim.rb', line 20

def queue
  Queue.new(@client, @queue)
end

#ttlObject



52
# File 'lib/cloud-queues/claim.rb', line 52

def ttl; refresh["ttl"]; end

#update(options = {}) ⇒ Object



36
37
38
39
40
# File 'lib/cloud-queues/claim.rb', line 36

def update(options = {})
  options = options.select { |opt| %w[ttl grace].include?(opt.to_s) }
  options[:ttl] ||= @default_ttl unless options["ttl"]
  @client.request(method: :patch, path: path, body: options, expects: 204) && true
end