Class: LazyResource::ResourceQueue

Inherits:
Object
  • Object
show all
Includes:
UrlGeneration
Defined in:
lib/lazy_resource/resource_queue.rb

Instance Method Summary collapse

Methods included from UrlGeneration

#collection_path, #collection_url, #element_path, #element_url, #new_element_path, #split_options

Constructor Details

#initializeResourceQueue

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

#request_queueObject



17
18
19
# File 'lib/lazy_resource/resource_queue.rb', line 17

def request_queue
  Thread.current[:request_queue] ||= Typhoeus::Hydra.new
end

#runObject



21
22
23
24
# File 'lib/lazy_resource/resource_queue.rb', line 21

def run
  send_to_request_queue!
  request_queue.run
end

#send_to_request_queue!Object



26
27
28
29
30
31
# File 'lib/lazy_resource/resource_queue.rb', line 26

def send_to_request_queue!
  while(relation = @queue.pop)
    request = Request.new(url_for(relation), relation, :headers => relation.headers)
    request_queue.queue(request)
  end
end

#url_for(relation) ⇒ Object



33
34
35
36
37
38
# File 'lib/lazy_resource/resource_queue.rb', line 33

def url_for(relation)
  url = ''
  url << relation.klass.site
  url << self.class.collection_path(relation.to_params, nil, relation.from)
  url
end