Class: WorkerArmy::Client

Inherits:
Base
  • Object
show all
Defined in:
lib/worker_army/client.rb

Class Method Summary collapse

Methods inherited from Base

#callback_retry_count, client_retry_count, config, #config, #worker_retry_count

Class Method Details

.push_job(job_class, data = {}, callback_url = nil, queue_prefix = 'queue', retry_count = 0) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/worker_army/client.rb', line 9

def push_job(job_class, data = {}, callback_url = nil, queue_prefix = 'queue', retry_count = 0)
  raise "No data" unless data
  raise "No job class provided" unless job_class
  worker_army_base_url = config['endpoint']
  callback_url = "#{worker_army_base_url}/generic_callback" unless callback_url
  response = nil
  begin
    response = RestClient.post "#{worker_army_base_url}/jobs",
      data.merge(
        job_class: job_class,
        callback_url: "#{worker_army_base_url}/callback?callback_url=#{callback_url}",
        queue_prefix: queue_prefix
      ).to_json,
      :content_type => :json, :accept => :json
  rescue => e
    puts "Failed! Retrying (#{retry_count})..."
    retry_count += 1
    if retry_count < client_retry_count(config)
      sleep (retry_count * 2)
      push_job(job_class, data, callback_url, queue_prefix, retry_count)
    end
  end
  if response and response.body and response.code == 200
    hash = JSON.parse(response.body)
    hash.merge('success' => true)
  else
    { 'success' => false }
  end
end