bamboozled-gitlab 0.2.9 → 0.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +5 -0
- data/bamboozled.gemspec +3 -3
- data/lib/bamboozled/api/base.rb +3 -3
- data/lib/bamboozled/api/employee.rb +27 -0
- data/lib/bamboozled/api/meta.rb +10 -1
- data/lib/bamboozled/version.rb +1 -1
- data/spec/fixtures/employee_time_off_policies.json +5 -0
- data/spec/fixtures/meta_time_off_policies.json +5 -0
- data/spec/fixtures/meta_time_off_types.json +5 -0
- data/spec/fixtures/time_off_balance_adjustment.json +4 -0
- data/spec/lib/bamboozled/api/employee_spec.rb +39 -0
- data/spec/lib/bamboozled/api/meta_spec.rb +16 -0
- metadata +18 -9
- data/relnotes/v0.1.0.md +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed4ff015705a09ed7b3ce6974b1a349ab648ac7b7161390e505f664aa023f46f
|
4
|
+
data.tar.gz: 1700f18975028a39afcc6965a8421ce45ee057c22efa096f03aac76f3ece9cce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17be92333aadccfa927cb99e2e9689da92608622514ad8fd9e4924cd91e1e58eec51f4f1bb0389c3958286df91af1135c3cd190652200870a974a0d4500eebf9
|
7
|
+
data.tar.gz: 6cdc1179bd86c9cfd2cc3632fd4e32fca206afef3a584ffcc91abc17e4b0f79bfc1411a58bf4db3cc4d2a6cb5f61f8efd95f8930bf2d5a0a6af1406e2ac53f6a
|
data/README.md
CHANGED
@@ -158,6 +158,11 @@ Please take the time to go through our [contribution guidelines](CONTRIBUTING.md
|
|
158
158
|
Special thanks to all the awesome people who have helped make this gem better.
|
159
159
|
You can see a list of them [here](https://github.com/Skookum/bamboozled/graphs/contributors).
|
160
160
|
|
161
|
+
#### Deploying to rubygems
|
162
|
+
1. Update the version in the `lib/bamboozled/version.rb` file
|
163
|
+
2. Update specs to use that version
|
164
|
+
3. In github, add a [release](https://github.com/Skookum/bamboozled/releases) off the master branch. This will trigger the github action to deploy to rubygems
|
165
|
+
|
161
166
|
## License
|
162
167
|
|
163
168
|
This project is licensed under the terms of the MIT license. See the
|
data/bamboozled.gemspec
CHANGED
@@ -6,8 +6,8 @@ require "bamboozled/version"
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "bamboozled-gitlab"
|
8
8
|
spec.version = Bamboozled::VERSION
|
9
|
-
spec.authors = ["Mark Rickert"]
|
10
|
-
spec.email = ["mjar81@gmail.com"]
|
9
|
+
spec.authors = ["Mark Rickert", "Lien Van Den Steen"]
|
10
|
+
spec.email = ["mjar81@gmail.com", "lvandensteen@gitlab.com"]
|
11
11
|
spec.summary = "A Ruby wrapper for the BambooHR API http://www.bamboohr.com/"
|
12
12
|
spec.description = "Bamboozled wraps the BambooHR API without the use of Rails dependencies."
|
13
13
|
spec.homepage = "http://github.com/Skookum/bamboozled"
|
@@ -26,5 +26,5 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_development_dependency "webmock", "~> 1.20"
|
27
27
|
|
28
28
|
spec.add_dependency "httparty", "~> 0.13"
|
29
|
-
spec.add_dependency "json", "
|
29
|
+
spec.add_dependency "json", ">= 2.3.0"
|
30
30
|
end
|
data/lib/bamboozled/api/base.rb
CHANGED
@@ -42,7 +42,7 @@ module Bamboozled
|
|
42
42
|
}.update(options[:headers] || {})
|
43
43
|
})
|
44
44
|
|
45
|
-
response = HTTParty.send(method, "#{path_prefix}#{path}", httparty_options)
|
45
|
+
response = HTTParty.send(method, "#{path_prefix(options[:api_version])}#{path}", httparty_options)
|
46
46
|
params[:response] = response.inspect.to_s
|
47
47
|
parse_response(response, params)
|
48
48
|
end
|
@@ -53,8 +53,8 @@ module Bamboozled
|
|
53
53
|
{ username: api_key, password: "x" }
|
54
54
|
end
|
55
55
|
|
56
|
-
def path_prefix
|
57
|
-
"https://api.bamboohr.com/api/gateway.php/#{subdomain}
|
56
|
+
def path_prefix(version = 'v1')
|
57
|
+
"https://api.bamboohr.com/api/gateway.php/#{subdomain}/#{version || 'v1'}/"
|
58
58
|
end
|
59
59
|
|
60
60
|
def parse_response(response, params)
|
@@ -59,6 +59,33 @@ module Bamboozled
|
|
59
59
|
request(:get, "employees/#{employee_id}/time_off/calculator?end=#{end_date}")
|
60
60
|
end
|
61
61
|
|
62
|
+
def time_off_balance_adjustment(employee_id, params)
|
63
|
+
allowed_parameters = %i[date timeOffTypeId amount note]
|
64
|
+
params = params.keep_if { |k, _| allowed_parameters.include? k }
|
65
|
+
|
66
|
+
options = {
|
67
|
+
body: params.to_json,
|
68
|
+
headers: { "Content-Type" => "application/json" }
|
69
|
+
}
|
70
|
+
|
71
|
+
request(:put, "employees/#{employee_id}/time_off/balance_adjustment", options)
|
72
|
+
end
|
73
|
+
|
74
|
+
def time_off_policies(employee_id)
|
75
|
+
request(:get, "employees/#{employee_id}/time_off/policies", { api_version: 'v1_1' })
|
76
|
+
end
|
77
|
+
|
78
|
+
def add_time_off_policies(employee_id, policies)
|
79
|
+
allowed_keys = %i[timeOffPolicyId accrualStartDate]
|
80
|
+
policies = policies.map { |policy| policy.keep_if { |k, _| allowed_keys.include? k } }
|
81
|
+
|
82
|
+
options = {
|
83
|
+
body: policies.to_json
|
84
|
+
}
|
85
|
+
|
86
|
+
request(:put, "employees/#{employee_id}/time_off/policies", options)
|
87
|
+
end
|
88
|
+
|
62
89
|
def photo_binary(employee_id)
|
63
90
|
request(:get, "employees/#{employee_id}/photo/small")
|
64
91
|
end
|
data/lib/bamboozled/api/meta.rb
CHANGED
@@ -19,7 +19,16 @@ module Bamboozled
|
|
19
19
|
typecast_values: false)
|
20
20
|
end
|
21
21
|
|
22
|
+
def time_off_types
|
23
|
+
request(:get, "meta/time_off/types")
|
24
|
+
end
|
25
|
+
|
26
|
+
def time_off_policies
|
27
|
+
options = {
|
28
|
+
headers: { "Content-Type" => "application/json" }
|
29
|
+
}
|
30
|
+
request(:get, "meta/time_off/policies", options)
|
31
|
+
end
|
22
32
|
end
|
23
33
|
end
|
24
34
|
end
|
25
|
-
|
data/lib/bamboozled/version.rb
CHANGED
@@ -0,0 +1,5 @@
|
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
content-type: application/json; charset=utf-8
|
3
|
+
date: Tue, 17 Jun 2014 19:25:35 UTC
|
4
|
+
|
5
|
+
{"timeOffTypes":[{"id":"2","name":"Employee Accruals","units":"days","color":"company","icon":null}],"defaultHours":[{"name":"Saturday","amount":"0"},{"name":"Sunday","amount":"0"},{"name":"default","amount":"8"},{"name":"Monday","amount":"8"},{"name":"Tuesday","amount":"8"},{"name":"Wednesday","amount":"8"},{"name":"Thursday","amount":"8"},{"name":"Friday","amount":"8"}]}
|
@@ -66,6 +66,45 @@ RSpec.describe "Employees" do
|
|
66
66
|
.to match_array %w(timeOffType name units balance)
|
67
67
|
end
|
68
68
|
|
69
|
+
it "Adjusts an employee's time off balance" do
|
70
|
+
response = File.new("spec/fixtures/time_off_balance_adjustment.json")
|
71
|
+
stub_request(:any, /.*api\.bamboohr\.com.*/).to_return(response)
|
72
|
+
|
73
|
+
options = {
|
74
|
+
date: "2014-06-17",
|
75
|
+
timeOffTypeId: 2,
|
76
|
+
amount: -1.5,
|
77
|
+
note: "test"
|
78
|
+
}
|
79
|
+
|
80
|
+
result = @client.employee.time_off_balance_adjustment("44259", options)
|
81
|
+
expect(result).to be_a Hash
|
82
|
+
end
|
83
|
+
|
84
|
+
it "Gets an employee's time off policies" do
|
85
|
+
response = File.new("spec/fixtures/employee_time_off_policies.json")
|
86
|
+
stub_request(:any, /.*api\.bamboohr\.com.*/).to_return(response)
|
87
|
+
|
88
|
+
policies = @client.employee.time_off_policies("44259")
|
89
|
+
|
90
|
+
expect(policies).to be_a Array
|
91
|
+
expect(policies.first.keys).to match_array %w(timeOffPolicyId timeOffTypeId accrualStartDate)
|
92
|
+
end
|
93
|
+
|
94
|
+
it "adds an employee time off policy" do
|
95
|
+
response = File.new("spec/fixtures/employee_time_off_policies.json")
|
96
|
+
stub_request(:any, /.*api\.bamboohr\.com.*/).to_return(response)
|
97
|
+
|
98
|
+
policies = [{
|
99
|
+
timeOffPolicyId: 2,
|
100
|
+
accrualStartDate: "2014-06-17"
|
101
|
+
}]
|
102
|
+
|
103
|
+
result = @client.employee.add_time_off_policies("44259", policies)
|
104
|
+
expect(policies).to be_a Array
|
105
|
+
expect(result.first.keys).to match_array %w(timeOffPolicyId timeOffTypeId accrualStartDate)
|
106
|
+
end
|
107
|
+
|
69
108
|
it "returns the proper url using employee email address" do
|
70
109
|
hashed = "4fdce145bab6d27d69e34403f99fd11c" # Hash of me@here.com
|
71
110
|
required_url = "http://x.bamboohr.com/employees/photos/?h=#{hashed}"
|
@@ -44,4 +44,20 @@ RSpec.describe "Meta" do
|
|
44
44
|
fields = @client.meta.lists
|
45
45
|
expect(fields).to be_a Array
|
46
46
|
end
|
47
|
+
|
48
|
+
it "Gets time off types" do
|
49
|
+
res = get_response("spec/fixtures/meta_time_off_types.json")
|
50
|
+
make_stub(res)
|
51
|
+
|
52
|
+
types = @client.meta.time_off_types
|
53
|
+
expect(types).to be_a Hash
|
54
|
+
end
|
55
|
+
|
56
|
+
it "Gets time off policies" do
|
57
|
+
res = get_response("spec/fixtures/meta_time_off_policies.json")
|
58
|
+
make_stub(res)
|
59
|
+
|
60
|
+
types = @client.meta.time_off_types
|
61
|
+
expect(types).to be_a Array
|
62
|
+
end
|
47
63
|
end
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bamboozled-gitlab
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Rickert
|
8
|
-
|
8
|
+
- Lien Van Den Steen
|
9
|
+
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2022-01-20 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: bundler
|
@@ -84,19 +85,20 @@ dependencies:
|
|
84
85
|
name: json
|
85
86
|
requirement: !ruby/object:Gem::Requirement
|
86
87
|
requirements:
|
87
|
-
- - "
|
88
|
+
- - ">="
|
88
89
|
- !ruby/object:Gem::Version
|
89
90
|
version: 2.3.0
|
90
91
|
type: :runtime
|
91
92
|
prerelease: false
|
92
93
|
version_requirements: !ruby/object:Gem::Requirement
|
93
94
|
requirements:
|
94
|
-
- - "
|
95
|
+
- - ">="
|
95
96
|
- !ruby/object:Gem::Version
|
96
97
|
version: 2.3.0
|
97
98
|
description: Bamboozled wraps the BambooHR API without the use of Rails dependencies.
|
98
99
|
email:
|
99
100
|
- mjar81@gmail.com
|
101
|
+
- lvandensteen@gitlab.com
|
100
102
|
executables: []
|
101
103
|
extensions: []
|
102
104
|
extra_rdoc_files: []
|
@@ -136,7 +138,6 @@ files:
|
|
136
138
|
- logos/bamboozled_logo_green.png
|
137
139
|
- logos/skookum_mark_black.png
|
138
140
|
- logos/skookum_mark_black.svg
|
139
|
-
- relnotes/v0.1.0.md
|
140
141
|
- spec/fixtures/add_employee_details.json
|
141
142
|
- spec/fixtures/add_employee_response.json
|
142
143
|
- spec/fixtures/add_employee_xml.yml
|
@@ -144,13 +145,17 @@ files:
|
|
144
145
|
- spec/fixtures/custom_report.json
|
145
146
|
- spec/fixtures/employee_emails.json
|
146
147
|
- spec/fixtures/employee_table_details.json
|
148
|
+
- spec/fixtures/employee_time_off_policies.json
|
147
149
|
- spec/fixtures/job_info.xml
|
148
150
|
- spec/fixtures/last_changed.json
|
149
151
|
- spec/fixtures/meta_fields.json
|
150
152
|
- spec/fixtures/meta_lists.json
|
151
153
|
- spec/fixtures/meta_tables.json
|
154
|
+
- spec/fixtures/meta_time_off_policies.json
|
155
|
+
- spec/fixtures/meta_time_off_types.json
|
152
156
|
- spec/fixtures/meta_users.json
|
153
157
|
- spec/fixtures/one_employee.json
|
158
|
+
- spec/fixtures/time_off_balance_adjustment.json
|
154
159
|
- spec/fixtures/time_off_estimate.json
|
155
160
|
- spec/fixtures/time_tracking_add_200_response.json
|
156
161
|
- spec/fixtures/time_tracking_add_empty_response.json
|
@@ -178,7 +183,7 @@ homepage: http://github.com/Skookum/bamboozled
|
|
178
183
|
licenses:
|
179
184
|
- MIT
|
180
185
|
metadata: {}
|
181
|
-
post_install_message:
|
186
|
+
post_install_message:
|
182
187
|
rdoc_options: []
|
183
188
|
require_paths:
|
184
189
|
- lib
|
@@ -193,8 +198,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
193
198
|
- !ruby/object:Gem::Version
|
194
199
|
version: '0'
|
195
200
|
requirements: []
|
196
|
-
rubygems_version: 3.
|
197
|
-
signing_key:
|
201
|
+
rubygems_version: 3.2.3
|
202
|
+
signing_key:
|
198
203
|
specification_version: 4
|
199
204
|
summary: A Ruby wrapper for the BambooHR API http://www.bamboohr.com/
|
200
205
|
test_files:
|
@@ -205,13 +210,17 @@ test_files:
|
|
205
210
|
- spec/fixtures/custom_report.json
|
206
211
|
- spec/fixtures/employee_emails.json
|
207
212
|
- spec/fixtures/employee_table_details.json
|
213
|
+
- spec/fixtures/employee_time_off_policies.json
|
208
214
|
- spec/fixtures/job_info.xml
|
209
215
|
- spec/fixtures/last_changed.json
|
210
216
|
- spec/fixtures/meta_fields.json
|
211
217
|
- spec/fixtures/meta_lists.json
|
212
218
|
- spec/fixtures/meta_tables.json
|
219
|
+
- spec/fixtures/meta_time_off_policies.json
|
220
|
+
- spec/fixtures/meta_time_off_types.json
|
213
221
|
- spec/fixtures/meta_users.json
|
214
222
|
- spec/fixtures/one_employee.json
|
223
|
+
- spec/fixtures/time_off_balance_adjustment.json
|
215
224
|
- spec/fixtures/time_off_estimate.json
|
216
225
|
- spec/fixtures/time_tracking_add_200_response.json
|
217
226
|
- spec/fixtures/time_tracking_add_empty_response.json
|
data/relnotes/v0.1.0.md
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
### New Features
|
2
|
-
|
3
|
-
* New method `Employee#add` allows client to create new employees. ([@kylefdoherty][])
|
4
|
-
* New method `Employee#update` allows client to update new employees. ([@kylefdoherty][])
|
5
|
-
|
6
|
-
### Changes
|
7
|
-
|
8
|
-
### Bug Fixes
|
9
|
-
|
10
|
-
* Added missing documentation for `Employee#add`. ([@mjording][])
|
11
|
-
|
12
|
-
[@kylefdoherty]: https://github.com/kylefdoherty
|
13
|
-
[@mjording]: https://github.com/mjording
|