peoplegroup-connectors 0.1.94 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/lib/peoplegroup/connectors/bamboo.rb +99 -77
- data/lib/peoplegroup/connectors/hris.rb +6 -6
- data/lib/peoplegroup/connectors/slack.rb +37 -17
- data/lib/peoplegroup/connectors/version.rb +1 -1
- metadata +39 -12
- data/data/email_mapper.yml +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52119b48d43178c73a802c6eb5361c052447bd6ee72a5a2a6d48b7fac5d19b41
|
4
|
+
data.tar.gz: 61af8cffaa0bbd000489f8ff493147bfbf2f7ffbd6e67a3daa93189f11305e2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4b5baabf6fa07a5e8c4c080682afddc5145d9419ece8d4c5df4b07f17ffdc0cbbd2ab1569148d136b749af31b0e03594e71ab936a0cf33b7e52e786d8bb25bcc
|
7
|
+
data.tar.gz: 331e0a2ecd5514ee3ed39a351d4c91fb4d7d3ac12c7a11227199810854a92324cf501d4ca18958ce2ca22719664927a5db504fff16cde6a88a2f00007974b545
|
data/README.md
CHANGED
@@ -31,6 +31,8 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
|
31
31
|
|
32
32
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
33
33
|
|
34
|
+
For local development and manual testing, copy the contents of the `.env.example` file to a new file called `.env` and fill-in the environment variable values. You will then be able to run a REPL by running `bundle exec bin/console` from the root of the repository.
|
35
|
+
|
34
36
|
## Contributing and Code of Conduct
|
35
37
|
|
36
38
|
Bug reports and pull requests are welcome on GitLab at https://gitlab.com/gitlab-com/people-group/peopleops-eng/connectors-gem. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
@@ -15,16 +15,21 @@ module PeopleGroup
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def get_employee_details(id)
|
18
|
-
employees.find { |emp| emp['
|
18
|
+
employees.find { |emp| emp['employeeNumber'] == id.to_s }
|
19
19
|
end
|
20
20
|
alias_method :get_team_member_details, :get_employee_details
|
21
21
|
|
22
22
|
def get_employee_details!(id)
|
23
23
|
employee_details = get_employee_details(id)
|
24
|
-
raise EmployeeNotFoundError, "No
|
24
|
+
raise EmployeeNotFoundError, "No team member found with employee number #{id}" if employee_details.nil?
|
25
25
|
|
26
26
|
employee_details
|
27
27
|
end
|
28
|
+
alias_method :get_team_member_details!, :get_employee_details!
|
29
|
+
|
30
|
+
def bamboo_id!(employee_number)
|
31
|
+
get_team_member_details!(employee_number)['id']
|
32
|
+
end
|
28
33
|
|
29
34
|
def search_employee(name)
|
30
35
|
return if name.empty?
|
@@ -67,6 +72,7 @@ module PeopleGroup
|
|
67
72
|
def search_team_member_by_email(email)
|
68
73
|
team_members.find { |team_member| team_member['workEmail']&.downcase == email&.downcase }
|
69
74
|
end
|
75
|
+
alias_method :slack_email_lookup_with_fallback, :search_team_member_by_email
|
70
76
|
|
71
77
|
def search_team_member_by_email!(email)
|
72
78
|
team_member = search_team_member_by_email(email)
|
@@ -74,22 +80,7 @@ module PeopleGroup
|
|
74
80
|
|
75
81
|
team_member
|
76
82
|
end
|
77
|
-
|
78
|
-
def slack_email_lookup_with_fallback(email)
|
79
|
-
file_path = File.join(__dir__, '../../../data/email_mapper.yml')
|
80
|
-
email_mapper = YAML.load_file(file_path)
|
81
|
-
email_hit = email_mapper.find { |mapping| mapping['slack_email'] == email.delete_suffix('@gitlab.com') }
|
82
|
-
email = "#{email_hit['bamboo_email']}@gitlab.com" if email_hit
|
83
|
-
|
84
|
-
employees.find { |employee| employee['workEmail'] == email }
|
85
|
-
end
|
86
|
-
|
87
|
-
def slack_email_lookup_with_fallback!(email)
|
88
|
-
employee = slack_email_lookup_with_fallback(email)
|
89
|
-
raise EmployeeNotFoundError, "No employee found with Slack email #{email}" if employee.nil?
|
90
|
-
|
91
|
-
employee
|
92
|
-
end
|
83
|
+
alias_method :slack_email_lookup_with_fallback!, :search_team_member_by_email!
|
93
84
|
|
94
85
|
def team_members_by_department(department)
|
95
86
|
active_and_current_team_members.select { |team_member| team_member['department'] == department }
|
@@ -123,7 +114,7 @@ module PeopleGroup
|
|
123
114
|
|
124
115
|
def people_managers_in_functions(departments: [], divisions: [])
|
125
116
|
active_and_current_team_members.select do |team_member|
|
126
|
-
(departments.include?(team_member['department']) || divisions.include?(team_member['division'])) && has_direct_reports?(team_member['
|
117
|
+
(departments.include?(team_member['department']) || divisions.include?(team_member['division'])) && has_direct_reports?(team_member['employeeNumber'])
|
127
118
|
end
|
128
119
|
end
|
129
120
|
|
@@ -133,17 +124,17 @@ module PeopleGroup
|
|
133
124
|
while direct_reports_to_check.present?
|
134
125
|
current_node = direct_reports_to_check.shift
|
135
126
|
reports_to_return << current_node
|
136
|
-
direct_reports_to_check.concat(direct_reports_for(current_node['
|
127
|
+
direct_reports_to_check.concat(direct_reports_for(current_node['employeeNumber']))
|
137
128
|
end
|
138
129
|
reports_to_return
|
139
130
|
end
|
140
131
|
|
141
132
|
def direct_reports_for(id)
|
142
|
-
active_and_current_team_members.select { |team_member| team_member['
|
133
|
+
active_and_current_team_members.select { |team_member| team_member['supervisorId'] == id.to_s }
|
143
134
|
end
|
144
135
|
|
145
136
|
def has_direct_reports?(id)
|
146
|
-
active_and_current_team_members.any? { |team_member| team_member['
|
137
|
+
active_and_current_team_members.any? { |team_member| team_member['supervisorId'] == id.to_s }
|
147
138
|
end
|
148
139
|
|
149
140
|
def reports_in_departments(departments, exclude_email)
|
@@ -163,17 +154,26 @@ module PeopleGroup
|
|
163
154
|
def create_employee(employee_details_hash)
|
164
155
|
retry_on_error { @client.employee.add(employee_details_hash) }
|
165
156
|
end
|
157
|
+
alias_method :create_team_member, :create_employee
|
166
158
|
|
167
|
-
def update_employee(
|
168
|
-
|
159
|
+
def update_employee(employee_number, employee_details_hash)
|
160
|
+
id = bamboo_id!(employee_number)
|
161
|
+
retry_on_error { @client.employee.update(id, employee_details_hash) }
|
169
162
|
end
|
163
|
+
alias_method :update_team_member, :update_employee
|
170
164
|
|
171
165
|
def departments
|
172
|
-
meta_fields
|
166
|
+
meta_fields
|
167
|
+
.detect { |res| res['name'] == 'Department' }
|
168
|
+
.dig('options')
|
169
|
+
.each_with_object([]) { |option, array| array << option['name'] if option['archived'] == 'no' } || []
|
173
170
|
end
|
174
171
|
|
175
172
|
def divisions
|
176
|
-
meta_fields
|
173
|
+
meta_fields
|
174
|
+
.detect { |res| res['name'] == 'Division' }
|
175
|
+
.dig('options')
|
176
|
+
.each_with_object([]) { |option, array| array << option['name'] if option['archived'] == 'no' } || []
|
177
177
|
end
|
178
178
|
|
179
179
|
def locations
|
@@ -213,30 +213,36 @@ module PeopleGroup
|
|
213
213
|
end
|
214
214
|
alias_method :active_and_current_team_members, :active_and_current_employees
|
215
215
|
|
216
|
-
def add_stock_options(
|
217
|
-
|
216
|
+
def add_stock_options(employee_number, data)
|
217
|
+
id = bamboo_id!(employee_number)
|
218
|
+
retry_on_error { @client.employee.add_table_row(id, 'customEquity', data) }
|
218
219
|
end
|
219
220
|
|
220
|
-
def stock_options_data(
|
221
|
-
|
221
|
+
def stock_options_data(employee_number)
|
222
|
+
id = bamboo_id!(employee_number)
|
223
|
+
retry_on_error { @client.employee.table_data(id, 'customEquity') }
|
222
224
|
end
|
223
225
|
|
224
|
-
def add_job_details(
|
225
|
-
|
226
|
+
def add_job_details(employee_number, data)
|
227
|
+
id = bamboo_id!(employee_number)
|
228
|
+
retry_on_error { @client.employee.add_table_row(id, 'jobInfo', data) }
|
226
229
|
end
|
227
230
|
|
228
|
-
def update_job_details(
|
229
|
-
|
231
|
+
def update_job_details(employee_number, data)
|
232
|
+
id = bamboo_id!(employee_number)
|
233
|
+
current_data = job_details(employee_number) # it should only be one row as we just created this user
|
230
234
|
row_id = current_data.first.dig('id')
|
231
|
-
retry_on_error { @client.employee.update_table_row(
|
235
|
+
retry_on_error { @client.employee.update_table_row(id, 'jobInfo', row_id, data) }
|
232
236
|
end
|
233
237
|
|
234
|
-
def add_compensation_details(
|
235
|
-
|
238
|
+
def add_compensation_details(employee_number, data)
|
239
|
+
id = bamboo_id!(employee_number)
|
240
|
+
retry_on_error { @client.employee.add_table_row(id, 'compensation', data) }
|
236
241
|
end
|
237
242
|
|
238
|
-
def employment_statuses(
|
239
|
-
|
243
|
+
def employment_statuses(employee_number)
|
244
|
+
id = bamboo_id!(employee_number)
|
245
|
+
retry_on_error { @client.employee.table_data(id, 'employmentStatus') }
|
240
246
|
end
|
241
247
|
|
242
248
|
def time_off_types
|
@@ -247,17 +253,19 @@ module PeopleGroup
|
|
247
253
|
time_off_types['timeOffTypes'].find { |type| type['name'] == name }
|
248
254
|
end
|
249
255
|
|
250
|
-
def time_off_estimate(
|
251
|
-
|
256
|
+
def time_off_estimate(employee_number, end_date = Date.today)
|
257
|
+
id = bamboo_id!(employee_number)
|
258
|
+
retry_on_error { @client.employee.time_off_estimate(id, end_date) }
|
252
259
|
end
|
253
260
|
|
254
|
-
def time_off_adjustment(
|
255
|
-
|
261
|
+
def time_off_adjustment(employee_number, options)
|
262
|
+
id = bamboo_id!(employee_number)
|
263
|
+
retry_on_error { @client.employee.time_off_balance_adjustment(id, options) }
|
256
264
|
end
|
257
265
|
|
258
|
-
def accrued_days(
|
266
|
+
def accrued_days(employee_number)
|
259
267
|
employee_accruals_type = time_off_type('Employee Accruals')
|
260
|
-
total_accruals = time_off_estimate(
|
268
|
+
total_accruals = time_off_estimate(employee_number).find { |type| type['timeOffType'] == employee_accruals_type['id'] }
|
261
269
|
|
262
270
|
total_accruals['balance'].to_f
|
263
271
|
end
|
@@ -266,75 +274,88 @@ module PeopleGroup
|
|
266
274
|
@time_off_policies ||= retry_on_error { @client.meta.time_off_policies }
|
267
275
|
end
|
268
276
|
|
269
|
-
def employee_time_off_policies(
|
270
|
-
|
277
|
+
def employee_time_off_policies(employee_number)
|
278
|
+
id = bamboo_id!(employee_number)
|
279
|
+
retry_on_error { @client.employee.time_off_policies(id) }
|
271
280
|
end
|
272
281
|
alias_method :team_member_time_off_policies, :employee_time_off_policies
|
273
282
|
|
274
|
-
def add_time_off_policy(
|
283
|
+
def add_time_off_policy(employee_number, time_off_policy_id, accrual_start_date)
|
275
284
|
policies = [{ timeOffPolicyId: time_off_policy_id, accrualStartDate: accrual_start_date }]
|
285
|
+
id = bamboo_id!(employee_number)
|
276
286
|
|
277
|
-
retry_on_error { @client.employee.add_time_off_policies(
|
287
|
+
retry_on_error { @client.employee.add_time_off_policies(id, policies) }
|
278
288
|
end
|
279
289
|
|
280
|
-
def remove_time_off_policy(
|
290
|
+
def remove_time_off_policy(employee_number, time_off_policy_id)
|
281
291
|
# A nil accrual start date removes a policy assignment
|
282
292
|
# Reference: https://documentation.bamboohr.com/reference#time-off-assign-time-off-policies-for-an-employee
|
283
|
-
add_time_off_policy(
|
293
|
+
add_time_off_policy(employee_number, time_off_policy_id, nil)
|
284
294
|
end
|
285
295
|
|
286
|
-
def job_details(
|
287
|
-
|
296
|
+
def job_details(employee_number)
|
297
|
+
id = bamboo_id!(employee_number)
|
298
|
+
retry_on_error { @client.employee.table_data(id, 'jobInfo') }
|
288
299
|
end
|
289
300
|
|
290
|
-
def resumes_folder_id(
|
291
|
-
@resumes_folder_id ||= files(
|
301
|
+
def resumes_folder_id(employee_number)
|
302
|
+
@resumes_folder_id ||= files(employee_number).dig('categories').find { |folder| folder['name'] == 'Resumes and Applications' }.dig('id')
|
292
303
|
end
|
293
304
|
|
294
|
-
def contract_folder_id(
|
295
|
-
@contract_folder_id ||= files(
|
305
|
+
def contract_folder_id(employee_number)
|
306
|
+
@contract_folder_id ||= files(employee_number).dig('categories').find { |folder| folder['name'] == 'Contracts & Changes' }.dig('id')
|
296
307
|
end
|
297
308
|
|
298
|
-
def add_file(
|
309
|
+
def add_file(employee_number, file_name, file, folder_id)
|
310
|
+
id = bamboo_id!(employee_number)
|
311
|
+
|
299
312
|
options = {
|
300
313
|
category: folder_id,
|
301
314
|
fileName: file_name,
|
302
315
|
share: 'yes',
|
303
316
|
file: file
|
304
317
|
}
|
305
|
-
retry_on_error { @client.employee.add_file(
|
318
|
+
retry_on_error { @client.employee.add_file(id, options) }
|
306
319
|
end
|
307
320
|
|
308
|
-
def add_employment_status(
|
309
|
-
|
321
|
+
def add_employment_status(employee_number, data)
|
322
|
+
id = bamboo_id!(employee_number)
|
323
|
+
retry_on_error { @client.employee.add_table_row(id, 'employmentStatus', data) }
|
310
324
|
end
|
311
325
|
|
312
|
-
def add_currency_conversion(
|
313
|
-
|
326
|
+
def add_currency_conversion(employee_number, data)
|
327
|
+
id = bamboo_id!(employee_number)
|
328
|
+
retry_on_error { @client.employee.add_table_row(id, 'customCurrencyConversion', data) }
|
314
329
|
end
|
315
330
|
|
316
|
-
def add_on_target_earnings(
|
317
|
-
|
331
|
+
def add_on_target_earnings(employee_number, data)
|
332
|
+
id = bamboo_id!(employee_number)
|
333
|
+
retry_on_error { @client.employee.add_table_row(id, 'customOnTargetEarnings', data) }
|
318
334
|
end
|
319
335
|
|
320
|
-
def add_signing_bonus(
|
321
|
-
|
336
|
+
def add_signing_bonus(employee_number, data)
|
337
|
+
id = bamboo_id!(employee_number)
|
338
|
+
retry_on_error { @client.employee.add_table_row(id, 'customBonus', data) }
|
322
339
|
end
|
323
340
|
|
324
|
-
def add_family_member(
|
325
|
-
|
341
|
+
def add_family_member(employee_number, data)
|
342
|
+
id = bamboo_id!(employee_number)
|
343
|
+
retry_on_error { @client.employee.add_table_row(id, 'customFamilyMember', data) }
|
326
344
|
end
|
327
345
|
|
328
|
-
def add_additional_data(
|
329
|
-
|
346
|
+
def add_additional_data(employee_number, data)
|
347
|
+
id = bamboo_id!(employee_number)
|
348
|
+
retry_on_error { @client.employee.add_table_row(id, 'customAdditionalInformation1', data) }
|
330
349
|
end
|
331
350
|
|
332
|
-
def additional_data(
|
333
|
-
|
351
|
+
def additional_data(employee_number)
|
352
|
+
id = bamboo_id!(employee_number)
|
353
|
+
retry_on_error { @client.employee.table_data(id, 'employmentStatus') }
|
334
354
|
end
|
335
355
|
|
336
|
-
def currency_conversion(
|
337
|
-
|
356
|
+
def currency_conversion(employee_number)
|
357
|
+
id = bamboo_id!(employee_number)
|
358
|
+
retry_on_error { @client.employee.table_data(id, 'customCurrencyConversion') }
|
338
359
|
end
|
339
360
|
|
340
361
|
def add_bonus(employee_number, comment)
|
@@ -364,8 +385,9 @@ module PeopleGroup
|
|
364
385
|
@meta_fields ||= retry_on_error { @client.meta.lists }
|
365
386
|
end
|
366
387
|
|
367
|
-
def files(
|
368
|
-
|
388
|
+
def files(employee_number)
|
389
|
+
id = bamboo_id!(employee_number)
|
390
|
+
@files ||= retry_on_error { @client.employee.files(id) }
|
369
391
|
end
|
370
392
|
|
371
393
|
def retry_on_error(&block)
|
@@ -14,14 +14,14 @@ module PeopleGroup
|
|
14
14
|
@workday.workers.map { |worker| format_worker(worker) }
|
15
15
|
end
|
16
16
|
|
17
|
-
def get_employee_details(
|
18
|
-
employees.find { |emp| emp['
|
17
|
+
def get_employee_details(employee_number)
|
18
|
+
employees.find { |emp| emp['employeeNumber'] == employee_number.to_s }
|
19
19
|
end
|
20
20
|
alias_method :get_team_member_details, :get_employee_details
|
21
21
|
|
22
|
-
def get_employee_details!(
|
23
|
-
employee_details = get_employee_details(
|
24
|
-
raise EmployeeNotFoundError, "No
|
22
|
+
def get_employee_details!(employee_number)
|
23
|
+
employee_details = get_employee_details(employee_number)
|
24
|
+
raise EmployeeNotFoundError, "No team member found with employee number #{employee_number}" if employee_details.nil?
|
25
25
|
|
26
26
|
employee_details
|
27
27
|
end
|
@@ -33,7 +33,7 @@ module PeopleGroup
|
|
33
33
|
return nil if worker.nil?
|
34
34
|
|
35
35
|
{
|
36
|
-
'
|
36
|
+
'employeeNumber' => worker.dig(:worker_data, :worker_id),
|
37
37
|
'firstName' => worker.dig(:worker_data, :personal_data, :name_data, :legal_name_data, :name_detail_data, :first_name),
|
38
38
|
'lastName' => worker.dig(:worker_data, :personal_data, :name_data, :legal_name_data, :name_detail_data, :last_name),
|
39
39
|
'preferredName' => worker.dig(:worker_data, :personal_data, :name_data, :preferred_name_data, :name_detail_data, :first_name),
|
@@ -12,22 +12,13 @@ module PeopleGroup
|
|
12
12
|
@client = ::Slack::Web::Client.new
|
13
13
|
end
|
14
14
|
|
15
|
-
def
|
16
|
-
@client.users_lookupByEmail(email: email)
|
17
|
-
rescue ::Slack::Web::Api::Errors::SlackError
|
18
|
-
nil
|
19
|
-
end
|
20
|
-
|
21
|
-
def bamboo_email_lookup_with_fallback(email)
|
22
|
-
file_path = File.join(__dir__, '../../../data/email_mapper.yml')
|
23
|
-
email_mapper = YAML.load_file(file_path)
|
24
|
-
email_hit = email_mapper.find { |mapping| mapping['bamboo_email'] == email.delete_suffix('@gitlab.com') }
|
25
|
-
email = "#{email_hit['slack_email']}@gitlab.com" if email_hit
|
26
|
-
|
15
|
+
def bamboo_email_lookup(email)
|
27
16
|
@client.users_lookupByEmail(email: email)
|
28
17
|
rescue ::Slack::Web::Api::Errors::SlackError
|
29
18
|
nil
|
30
19
|
end
|
20
|
+
alias_method :bamboo_email_lookup_with_fallback, :bamboo_email_lookup
|
21
|
+
alias_method :find_user, :bamboo_email_lookup
|
31
22
|
|
32
23
|
def find_user_by_id(id)
|
33
24
|
@client.users_info(user: id)
|
@@ -41,33 +32,62 @@ module PeopleGroup
|
|
41
32
|
nil
|
42
33
|
end
|
43
34
|
|
35
|
+
# https://www.rubydoc.info/gems/slack-ruby-client/0.17.0/Slack%2FWeb%2FApi%2FEndpoints%2FConversations:conversations_list
|
36
|
+
# Defaults to only show public channels.
|
44
37
|
def list_public_channels
|
45
|
-
|
46
|
-
channels.
|
38
|
+
response = @client.conversations_list(exclude_archived: true)
|
39
|
+
response['channels'].map { |channel| channel['name'] }
|
47
40
|
end
|
48
41
|
|
42
|
+
# https://www.rubydoc.info/gems/slack-ruby-client/0.17.0/Slack%2FWeb%2FApi%2FEndpoints%2FChat:chat_getPermalink
|
49
43
|
def link_for_message(channel:, timestamp:)
|
50
44
|
@client.chat_getPermalink(channel: channel, message_ts: timestamp)
|
51
45
|
end
|
52
46
|
|
47
|
+
# https://www.rubydoc.info/gems/slack-ruby-client/0.17.0/Slack%2FWeb%2FApi%2FEndpoints%2FChat:chat_postMessage
|
53
48
|
def send_message(channel:, text: '', as_user: true, attachments: [], thread_ts: nil, reply_broadcast: false, formatted_message: [])
|
54
|
-
|
49
|
+
options = {
|
50
|
+
channel: channel,
|
51
|
+
text: text,
|
52
|
+
as_user: true,
|
53
|
+
attachments: attachments,
|
54
|
+
unfurl_links: false,
|
55
|
+
thread_ts: thread_ts,
|
56
|
+
reply_broadcast: reply_broadcast,
|
57
|
+
blocks: formatted_message
|
58
|
+
}
|
59
|
+
|
60
|
+
@client.chat_postMessage(options)
|
55
61
|
end
|
56
62
|
|
63
|
+
# https://www.rubydoc.info/gems/slack-ruby-client/0.17.0/Slack%2FWeb%2FApi%2FEndpoints%2FChat:chat_update
|
57
64
|
def update_message(channel:, timestamp:, text: '', attachments: [], formatted_message: [])
|
58
|
-
|
65
|
+
options = {
|
66
|
+
channel: channel,
|
67
|
+
text: text,
|
68
|
+
ts: timestamp,
|
69
|
+
as_user: true,
|
70
|
+
attachments: attachments,
|
71
|
+
blocks: formatted_message
|
72
|
+
}
|
73
|
+
|
74
|
+
@client.chat_update(options)
|
59
75
|
end
|
60
76
|
|
77
|
+
# https://www.rubydoc.info/gems/slack-ruby-client/0.17.0/Slack%2FWeb%2FApi%2FEndpoints%2FViews:views_open
|
61
78
|
def send_modal_message(trigger:, view:)
|
62
79
|
@client.views_open(trigger_id: trigger, view: view)
|
63
80
|
end
|
64
81
|
|
82
|
+
# https://www.rubydoc.info/gems/slack-ruby-client/0.17.0/Slack%2FWeb%2FApi%2FEndpoints%2FViews:views_publish
|
65
83
|
def publish_view(user_id:, trigger:, view:)
|
66
84
|
@client.views_publish(user_id: user_id, trigger_id: trigger, view: view)
|
67
85
|
end
|
68
86
|
|
87
|
+
# https://www.rubydoc.info/gems/slack-ruby-client/0.17.0/Slack%2FWeb%2FApi%2FEndpoints%2FConversations:conversations_history
|
69
88
|
def get_message(channel:, timestamp:)
|
70
|
-
|
89
|
+
options = { channel: channel, latest: timestamp, limit: 1, inclusive: true }
|
90
|
+
@client.conversations_history(options)&.messages&.first
|
71
91
|
end
|
72
92
|
end
|
73
93
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: peoplegroup-connectors
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- lien van den steen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gitlab
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0
|
47
|
+
version: '1.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0
|
54
|
+
version: '1.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: splinter-pto
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,14 +128,14 @@ dependencies:
|
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: '3.
|
131
|
+
version: '3.11'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: '3.
|
138
|
+
version: '3.11'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: rubocop
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,34 +150,48 @@ dependencies:
|
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0.91'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rake
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '13.0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '13.0'
|
153
167
|
- !ruby/object:Gem::Dependency
|
154
168
|
name: gitlab-styles
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
156
170
|
requirements:
|
157
171
|
- - "~>"
|
158
172
|
- !ruby/object:Gem::Version
|
159
|
-
version: '
|
173
|
+
version: '7.0'
|
160
174
|
type: :development
|
161
175
|
prerelease: false
|
162
176
|
version_requirements: !ruby/object:Gem::Requirement
|
163
177
|
requirements:
|
164
178
|
- - "~>"
|
165
179
|
- !ruby/object:Gem::Version
|
166
|
-
version: '
|
180
|
+
version: '7.0'
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
182
|
name: rubocop-packaging
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
170
184
|
requirements:
|
171
185
|
- - "~>"
|
172
186
|
- !ruby/object:Gem::Version
|
173
|
-
version: '0.
|
187
|
+
version: '0.5'
|
174
188
|
type: :development
|
175
189
|
prerelease: false
|
176
190
|
version_requirements: !ruby/object:Gem::Requirement
|
177
191
|
requirements:
|
178
192
|
- - "~>"
|
179
193
|
- !ruby/object:Gem::Version
|
180
|
-
version: '0.
|
194
|
+
version: '0.5'
|
181
195
|
- !ruby/object:Gem::Dependency
|
182
196
|
name: rubocop-rspec
|
183
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -220,6 +234,20 @@ dependencies:
|
|
220
234
|
- - "~>"
|
221
235
|
- !ruby/object:Gem::Version
|
222
236
|
version: '0.21'
|
237
|
+
- !ruby/object:Gem::Dependency
|
238
|
+
name: byebug
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - "~>"
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: '11.1'
|
244
|
+
type: :development
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - "~>"
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: '11.1'
|
223
251
|
description: Avoid repeating methods in different projects for our connectos.
|
224
252
|
email:
|
225
253
|
- lvandensteen@gitlab.com
|
@@ -229,7 +257,6 @@ extra_rdoc_files: []
|
|
229
257
|
files:
|
230
258
|
- LICENSE.txt
|
231
259
|
- README.md
|
232
|
-
- data/email_mapper.yml
|
233
260
|
- lib/peoplegroup/connectors.rb
|
234
261
|
- lib/peoplegroup/connectors/bamboo.rb
|
235
262
|
- lib/peoplegroup/connectors/gitlab.rb
|
@@ -263,7 +290,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
263
290
|
- !ruby/object:Gem::Version
|
264
291
|
version: '0'
|
265
292
|
requirements: []
|
266
|
-
rubygems_version: 3.2.
|
293
|
+
rubygems_version: 3.2.32
|
267
294
|
signing_key:
|
268
295
|
specification_version: 4
|
269
296
|
summary: Library for our shared connectors.
|
data/data/email_mapper.yml
DELETED