Class: LazyResource::ResourceQueue
- Inherits:
-
Object
- Object
- LazyResource::ResourceQueue
show all
- Includes:
- UrlGeneration
- Defined in:
- lib/lazy_resource/resource_queue.rb
Instance Method Summary
collapse
#collection_path, #collection_url, #element_path, #element_url, #new_element_path, #split_options
Constructor Details
Returns a new instance of ResourceQueue.
5
6
7
|
# File 'lib/lazy_resource/resource_queue.rb', line 5
def initialize
@queue = []
end
|
Instance Method Details
#flush! ⇒ Object
13
14
15
|
# File 'lib/lazy_resource/resource_queue.rb', line 13
def flush!
@queue = []
end
|
#queue(relation) ⇒ Object
9
10
11
|
# File 'lib/lazy_resource/resource_queue.rb', line 9
def queue(relation)
@queue.push(relation)
end
|
#run ⇒ Object
21
22
23
24
|
# File 'lib/lazy_resource/resource_queue.rb', line 21
def run
send_to_request_queue!
request_queue.run if request_queue.items_queued?
end
|
#send_to_request_queue! ⇒ Object
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/lazy_resource/resource_queue.rb', line 26
def send_to_request_queue!
while(relation = @queue.pop)
options = { :headers => relation., :method => relation.method }
if [:post, :put].include?(relation.method)
options[:body] = relation.to_params.to_json
end
request = Request.new(url_for(relation), relation, options)
request_queue.queue(request)
end
end
|
#url_for(relation) ⇒ Object
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/lazy_resource/resource_queue.rb', line 39
def url_for(relation)
if relation.route.nil?
include_query = ![:post, :put].include?(relation.method)
url = ''
url << relation.klass.site
url << relation.klass.collection_path(relation.to_params, nil, relation.from, include_query)
url
else
url = relation.route
url.gsub!(/:\w*/) do |match|
attr = match[1..-1].to_sym
if relation.where_values.has_key?(attr)
relation.where_values[attr]
else
match
end
end
if url =~ /http/
url
else
relation.klass.site + url
end
end
end
|