cloud-queues 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/cloud-queues.rb +1 -0
- data/lib/cloud-queues/claim.rb +5 -2
- data/lib/cloud-queues/messages.rb +42 -0
- data/lib/cloud-queues/queue.rb +12 -4
- data/lib/cloud-queues/version.rb +1 -1
- metadata +3 -2
data/lib/cloud-queues.rb
CHANGED
data/lib/cloud-queues/claim.rb
CHANGED
@@ -30,8 +30,7 @@ module CloudQueues
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def messages
|
33
|
-
|
34
|
-
@messages = msgs.map { |message| Message.new(queue, message) }
|
33
|
+
@messages = process_messages(refresh)
|
35
34
|
end
|
36
35
|
|
37
36
|
def update(options = {})
|
@@ -54,6 +53,10 @@ module CloudQueues
|
|
54
53
|
|
55
54
|
private
|
56
55
|
|
56
|
+
def process_messages(body)
|
57
|
+
Messages.new(queue, body["messages"].map{|msg| Message.new(queue, msg) }, body["links"] )
|
58
|
+
end
|
59
|
+
|
57
60
|
def refresh
|
58
61
|
@client.request(method: :get, path: path).body
|
59
62
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module CloudQueues
|
2
|
+
class Messages
|
3
|
+
include Enumerable
|
4
|
+
|
5
|
+
attr_accessor :queue
|
6
|
+
|
7
|
+
attr_reader :marker
|
8
|
+
|
9
|
+
def initialize(queue, msgs, links)
|
10
|
+
@queue = queue
|
11
|
+
@messages = msgs
|
12
|
+
|
13
|
+
@marker = find_marker links if links
|
14
|
+
end
|
15
|
+
|
16
|
+
def each(&block)
|
17
|
+
@messages.each(&block)
|
18
|
+
end
|
19
|
+
|
20
|
+
def [](index)
|
21
|
+
@messages[index]
|
22
|
+
end
|
23
|
+
|
24
|
+
def next(options = {})
|
25
|
+
if @marker
|
26
|
+
@queue.messages options.merge(marker: @marker)
|
27
|
+
else
|
28
|
+
# We don't have a next marker because this set of messages was
|
29
|
+
# never intended to be part of a larger set.
|
30
|
+
nil
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def find_marker(links)
|
37
|
+
uri = URI.parse(links.select{|link| link["rel"] == "next" }[0]["href"])
|
38
|
+
return uri.query.match(/marker=([^&]+)/)[1]
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
data/lib/cloud-queues/queue.rb
CHANGED
@@ -39,13 +39,17 @@ module CloudQueues
|
|
39
39
|
response = @client.request_all(options.class == String ? nil : "messages",
|
40
40
|
method: :get, path: "#{path}/messages", expects: [200, 204], query: options)
|
41
41
|
return [] if response.status == 204
|
42
|
-
response.body.class == Hash
|
42
|
+
if response.body.class == Hash
|
43
|
+
return process_messages(response.body["messages"], response.body["links"])
|
44
|
+
else
|
45
|
+
return process_messages(response.body)
|
46
|
+
end
|
43
47
|
end
|
44
48
|
|
45
49
|
def get(id, options = {})
|
46
50
|
options = options[:claim_id] ? {claim_id: options[:claim_id]} : {}
|
47
51
|
msgs = @client.request(method: :get, path: "#{path}/messages/#{id}", query: options)
|
48
|
-
|
52
|
+
process_message(msgs.body)
|
49
53
|
end
|
50
54
|
|
51
55
|
def put(*msgs)
|
@@ -132,8 +136,12 @@ module CloudQueues
|
|
132
136
|
|
133
137
|
private
|
134
138
|
|
135
|
-
def process_messages(msgs)
|
136
|
-
msgs.map
|
139
|
+
def process_messages(msgs, links = nil)
|
140
|
+
Messages.new(self, msgs.map{|msg| process_message(msg) }, links)
|
141
|
+
end
|
142
|
+
|
143
|
+
def process_message(msg)
|
144
|
+
Message.new(self, msg)
|
137
145
|
end
|
138
146
|
|
139
147
|
def process_claim(claim_id, msgs)
|
data/lib/cloud-queues/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloud-queues
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-11-
|
12
|
+
date: 2013-11-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: excon
|
@@ -60,6 +60,7 @@ files:
|
|
60
60
|
- lib/cloud-queues/claim.rb
|
61
61
|
- lib/cloud-queues/client.rb
|
62
62
|
- lib/cloud-queues/message.rb
|
63
|
+
- lib/cloud-queues/messages.rb
|
63
64
|
- lib/cloud-queues/queue.rb
|
64
65
|
- lib/cloud-queues/version.rb
|
65
66
|
- lib/cloud-queues.rb
|