Class: Bob::API
- Inherits:
-
Object
show all
- Defined in:
- lib/bob/api/api.rb
Direct Known Subclasses
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'
Class Method Summary
collapse
Class Method Details
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/bob/api/api.rb', line 69
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
88
89
90
91
92
93
|
# File 'lib/bob/api/api.rb', line 88
def self.build_url(endpoint, params = {})
url = "#{BASE_URL}/#{Bob.api_version}/#{endpoint}"
url += "?#{URI.encode_www_form(params)}" unless params.empty?
url
end
|
81
82
83
84
85
86
|
# File 'lib/bob/api/api.rb', line 81
def self.
{
Accept: 'application/json',
'Content-Type': 'application/json'
}
end
|
.create_csv(content) ⇒ Object
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
# File 'lib/bob/api/api.rb', line 95
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
53
54
55
56
57
|
# File 'lib/bob/api/api.rb', line 53
def self.delete(endpoint)
url = build_url(endpoint)
response = RestClient.delete(url)
response.code
end
|
.get(endpoint, params = {}, csv_response: false) ⇒ Object
13
14
15
16
17
18
19
|
# File 'lib/bob/api/api.rb', line 13
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
21
22
23
24
25
26
27
28
29
|
# File 'lib/bob/api/api.rb', line 21
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()
)
response.code
end
|
.post_file(endpoint, file_path) ⇒ Object
rubocop:disable Metrics/MethodLength
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
# File 'lib/bob/api/api.rb', line 37
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
31
32
33
34
35
|
# File 'lib/bob/api/api.rb', line 31
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
59
60
61
62
63
64
65
66
67
|
# File 'lib/bob/api/api.rb', line 59
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
|