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