Class: Bob::API
- Inherits:
-
Object
show all
- Defined in:
- lib/bob/api/api.rb
Direct Known Subclasses
Employee::CustomTables, Employee::Documents, Employee::EmploymentHistory, Employee::EquityGrants, Employee::Invites, Employee::LifecycleHistory, Employee::Salaries, Employee::TimeOff, Employee::Trainings, Employee::VariablePayments, Employee::WorkHistory, Employees, MetaData::CompanyFields, MetaData::CompanyLists, MetaData::TimeOffPolicies, OnboardingWizards, Reports, TimeOff
Constant Summary
collapse
- BASE_URL =
'https://api.hibob.com'
- SANDBOX_URL =
'https://api.sandbox.hibob.com'
Class Method Summary
collapse
Class Method Details
72
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/bob/api/api.rb', line 72
def self.(use_api_key: false)
if use_api_key
{
Authorization: Bob.api_key
}
else
{
Authorization: "Basic #{Base64.strict_encode64("#{Bob.access_user_name}:#{Bob.access_token}")}"
}
end
end
|
.build_url(endpoint, params = {}) ⇒ Object
91
92
93
94
95
96
97
|
# File 'lib/bob/api/api.rb', line 91
def self.build_url(endpoint, params = {})
url = "#{BASE_URL}/#{Bob.api_version}/#{endpoint}" unless Bob.use_sandbox
url = "#{SANDBOX_URL}/#{Bob.api_version}/#{endpoint}" if Bob.use_sandbox
url += "?#{URI.encode_www_form(params)}" unless params.empty?
url
end
|
84
85
86
87
88
89
|
# File 'lib/bob/api/api.rb', line 84
def self.
{
Accept: 'application/json',
'Content-Type': 'application/json'
}
end
|
.create_csv(content) ⇒ Object
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
# File 'lib/bob/api/api.rb', line 99
def self.create_csv(content)
file_name = SecureRandom.alphanumeric(15)
content.gsub!("\r", '').gsub!('', '')
splitted = content.split("\n")
CSV.open("tmp/#{file_name}.csv", 'wb') do |csv|
csv << splitted.shift.split(',')
splitted.each do |row|
csv << CSV.parse_line(row)
end
end
"tmp/#{file_name}.csv"
end
|
.delete(endpoint) ⇒ Object
56
57
58
59
60
|
# File 'lib/bob/api/api.rb', line 56
def self.delete(endpoint)
url = build_url(endpoint)
response = RestClient.delete(url, )
response.code
end
|
.get(endpoint, params = {}, csv_response: false) ⇒ Object
14
15
16
17
18
19
20
|
# File 'lib/bob/api/api.rb', line 14
def self.get(endpoint, params = {}, csv_response: false)
url = build_url(endpoint, params)
response = RestClient.get(url, )
return create_csv(response.body) if csv_response
JSON.parse(response.body)
end
|
.post(endpoint, params = {}, use_api_key: false) ⇒ Object
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/bob/api/api.rb', line 22
def self.post(endpoint, params = {}, use_api_key: false)
url = build_url(endpoint)
response = RestClient.post(
url,
params.to_json,
(use_api_key: use_api_key).merge()
)
rescue RestClient::BadRequest => e
p e
response.code
end
|
.post_file(endpoint, file_path) ⇒ Object
rubocop:disable Metrics/MethodLength
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/bob/api/api.rb', line 40
def self.post_file(endpoint, file_path) url = build_url(endpoint)
payload = {
multipart: true,
file: File.new(file_path)
}
= {
Accept: 'application/json',
'Content-Type': 'multipart/form-data',
Authorization: "Basic #{Base64.strict_encode64("#{Bob.access_user_name}:#{Bob.access_token}")}"
}
response = RestClient.post(url, payload, )
response.code
end
|
.post_media(endpoint, params = {}) ⇒ Object
34
35
36
37
38
|
# File 'lib/bob/api/api.rb', line 34
def self.post_media(endpoint, params = {})
url = build_url(endpoint)
response = RestClient.post(url, params.to_json, .merge())
response.code
end
|
.put(endpoint, params = {}, use_api_key: false) ⇒ Object
62
63
64
65
66
67
68
69
70
|
# File 'lib/bob/api/api.rb', line 62
def self.put(endpoint, params = {}, use_api_key: false)
url = build_url(endpoint)
response = RestClient.put(
url,
params.to_json,
(use_api_key: use_api_key).merge()
)
response.code
end
|