class LeadRouter::Client

Public Class Methods

new(host, user, token) click to toggle source
# File lib/lead_router/client.rb, line 6
def initialize(host, user, token)
  @host = host
  @user = user
  @token = token
end

Public Instance Methods

add_activities(site_uuid, lead_uuid, activities) click to toggle source
# File lib/lead_router/client.rb, line 25
def add_activities(site_uuid, lead_uuid, activities)
  require_arg "site_uuid", site_uuid
  require_arg "lead_uuid", lead_uuid
  request :post, "https://#{@host}/rest/sites/#{site_uuid}/leads/#{lead_uuid}/activities", activities.to_json
end
create_lead(site_uuid, lead, destinations=[]) click to toggle source
# File lib/lead_router/client.rb, line 12
def create_lead(site_uuid, lead, destinations=[])
  destinations ||= []
  require_arg "site_uuid", site_uuid
  dest_headers = destinations.empty? ? nil : { "X-ROUTER-DESTINATIONS" => destinations.join(",") }
  request :post, "https://#{@host}/rest/sites/#{site_uuid}/leads", lead.to_json, dest_headers
end
create_potential_seller_lead(site_uuid, lead) click to toggle source
# File lib/lead_router/client.rb, line 31
def create_potential_seller_lead(site_uuid, lead)
  require_arg "site_uuid", site_uuid
  request :post, "https://#{@host}/rest/sites/#{site_uuid}/potential-seller-leads", lead.to_json
end
delete_user(site_uuid, user_id) click to toggle source

Send a request to notify a user was deleted in the Lead Manager

Only the lead manager is allowed to send this request, every other client will get 403

# File lib/lead_router/client.rb, line 64
def delete_user(site_uuid, user_id)
  request :delete, "http://#{@host}/rest/sites/#{site_uuid}/users/#{user_id}"
end
update_lead(site_uuid, lead_uuid, lead) click to toggle source
# File lib/lead_router/client.rb, line 19
def update_lead(site_uuid, lead_uuid, lead)
  require_arg "site_uuid", site_uuid
  require_arg "lead_uuid", lead_uuid
  request :patch, "https://#{@host}/rest/sites/#{site_uuid}/leads/#{lead_uuid}", lead.to_json
end
update_user(site_uuid, user_id, user) click to toggle source

Send a request to notify a user was updated in the Lead Manager

Only the lead manager is allowed to send this request, every other client will get 403

Must be called with the full user object, all fields. See all fields in: developers.realgeeks.com/users/

'name' could be provided as 'first_name' and 'last_name', they will be combined as 'name'

# File lib/lead_router/client.rb, line 46
def update_user(site_uuid, user_id, user)
  require_arg "site_uuid", site_uuid
  require_arg "user_id", user_id

  # if name not set try to use first_name and last_name
  user = user.clone
  first = user.delete(:first_name)
  last  = user.delete(:last_name)
  user['name'] ||= first unless first.nil?
  user['name'] += " #{last}" unless last.nil?

  request :put, "https://#{@host}/rest/sites/#{site_uuid}/users/#{user_id}", user.to_json
end

Private Instance Methods

request(method, url, body='', headers={}) click to toggle source
# File lib/lead_router/client.rb, line 70
def request(method, url, body='', headers={})
  headers ||= {}
  headers.merge!({content_type: 'application/json', user_agent: "LeadRouterRuby/#{VERSION}"})

  RestClient::Request.execute(
    :method => method,
    :url => url,
    :payload => body,
    :headers => headers,
    :user => @user,
    :password => @token
  )
rescue ::Exception => ex
  raise LeadRouter::Exception, ex
end
require_arg(name, value) click to toggle source
# File lib/lead_router/client.rb, line 86
def require_arg(name, value)
  raise LeadRouter::Exception, ArgumentError.new("#{name} cannot be nil") if value.nil?
end