class Taleo::Client

Base object for executing queries and wrapping HTTP requests.

Attributes

auth_token[R]
org_code[R]
password[R]
service_url[R]
username[R]

Public Class Methods

new(org_code, username, password, service_url) click to toggle source
# File lib/taleo/client.rb, line 14
def initialize(org_code, username, password, service_url)
  @org_code = org_code
  @username = username
  @password = password
  @service_url = service_url
end

Public Instance Methods

activity(id) click to toggle source
# File lib/taleo/client.rb, line 33
def activity(id)
  Activity.new(show('activity', id), self)
end
api_url() click to toggle source
# File lib/taleo/client.rb, line 92
def api_url
  return @api_url if !@api_url.nil?

  api_url!
end
api_url!() click to toggle source
# File lib/taleo/client.rb, line 117
def api_url!
  conn = Faraday.new(url: "#{service_url}/#{org_code}") do |c|
    c.use Faraday::Response::RaiseError
  end
  res = conn.get
  data = JSON.parse(res.body)
  @api_url = data.dig('response', 'URL')
  @api_url
end
candidate(id) click to toggle source
# File lib/taleo/client.rb, line 29
def candidate(id)
  Candidate.new(show('candidate', id), self)
end
connection() click to toggle source
# File lib/taleo/client.rb, line 98
def connection
  Faraday.new(url: api_url) do |conn|
    conn.use Faraday::Response::RaiseError
    conn.headers['Cookie'] = "authToken=#{auth_token}"
  end
end
cursor(resource, klass, start = 1, limit = 10, params: {}) click to toggle source
# File lib/taleo/client.rb, line 43
def cursor(resource, klass, start = 1, limit = 10, params: {})
  res = connection.get do |req|
    req.url "object/#{resource}/search"
    req.params.merge!(params).merge!({
      'start' => start,
      'limit' => limit
    })
  end
  data = JSON.parse(res.body)
  pagination = data.dig('response', 'pagination')
  results = data.dig('response', 'searchResults')
  cursor = Cursor.new(pagination, results, resource, klass, self)
  cursor.self_page
end
download(url) click to toggle source
# File lib/taleo/client.rb, line 105
def download(url)
  io = StringIO.new
  connection.get do |req|
    req.url url
    req.options.on_data = Proc.new do |chunk|
      io << chunk
    end
  end
  io.rewind
  io
end
employee(id) click to toggle source
# File lib/taleo/client.rb, line 21
def employee(id)
  Employee.new(show('employee', id), self)
end
employees(start = 1, limit = 10, params: {}) click to toggle source
# File lib/taleo/client.rb, line 37
def employees(start = 1, limit = 10, params: {})
  raise ArgumentError, "At least one query parameter is required " \
                       "for employee search" if params.keys.size.zero?
  cursor('employee', Employee, start, limit, params: params)
end
login() click to toggle source
# File lib/taleo/client.rb, line 66
def login
  params = {
    orgCode: org_code,
    userName: username,
    password: password
  }

  conn = Faraday.new(url: api_url) do |c|
    c.use Faraday::Response::RaiseError
  end

  res = conn.post do |req|
    req.url 'login'
    req.params.merge!(params)
  end

  data = JSON.parse(res.body)
  @auth_token = data.dig('response', 'authToken')
end
logout() click to toggle source
# File lib/taleo/client.rb, line 86
def logout
  connection.post do |req|
    req.url 'logout'
  end
end
packet(id) click to toggle source
# File lib/taleo/client.rb, line 25
def packet(id)
  Packet.new(show('packet', id), self)
end
show(resource, id) click to toggle source
# File lib/taleo/client.rb, line 58
def show(resource, id)
  res = connection.get do |req|
    req.url "object/#{resource}/#{id}"
  end
  data = JSON.parse(res.body)
  data.dig('response', resource)
end