peoplegroup-connectors 0.1.20 → 0.1.27

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f374626a4dca0d62ab5145ba533e740ba48538f697be1c8440da3cdd73b7f13a
4
- data.tar.gz: 904486b6a8ebb27880cd9e488817e6f63960b45f24be27a4e836b5404a205d14
3
+ metadata.gz: 5d75a768e48cbc915cd653e500736160f081ccb4ae5f0a9c974b444028245346
4
+ data.tar.gz: 7c1bb07d0b7218319b91133b8ed799b88d8354f7beedd2102295305605b2acbc
5
5
  SHA512:
6
- metadata.gz: '087e74440af5d85784a4c2f03d5eb1e8193a8b32ae6a134f069375d50b1e849e802a9539ac9c491adb76a79922921e93faeb04f011165a11cc43ec5884ebb716'
7
- data.tar.gz: d730fb512e67769c35f6240bb1ea0596a287edd699758003d06d68e5a742b9a4b2345478e828eae10396b94510ef33d41f1902557e19b424eda1760517a19372
6
+ metadata.gz: 10090f999bfa39337629672c26fe816a55475fd53cff8021273eb9eff5229237e89ce476176ff6212e1e1d1f06dea61325a8b713899265f836e5fd8628a433c1
7
+ data.tar.gz: 859d0f1fb5ac3249d7d70b74420fa3627e151669e5111aa2413026c07e20f022b83e4c149a65434e1d9666f3235bae60d7440ba5dde2d299957dd9b3aa76fcf4
@@ -98,6 +98,10 @@ module PeopleGroup
98
98
  @client.employee.table_data(employee_id, 'customEquity')
99
99
  end
100
100
 
101
+ def add_job_details(employee_id, data)
102
+ @client.employee.add_table_row(employee_id, 'jobInfo', data)
103
+ end
104
+
101
105
  def update_job_details(employee_id, data)
102
106
  current_data = job_details(employee_id) # it should only be one row as we just created this user
103
107
  row_id = current_data.first.dig('id')
@@ -5,6 +5,8 @@ require 'gitlab'
5
5
  module PeopleGroup
6
6
  module Connectors
7
7
  class GitLab
8
+ MAX_RETRIES = 3
9
+
8
10
  API_URL = ENV['GITLAB_API_V4_URL'] || 'https://gitlab.com/api/v4'
9
11
 
10
12
  def initialize(token: ENV['GITLAB_API_TOKEN'])
@@ -14,7 +16,7 @@ module PeopleGroup
14
16
  def find_gitlabber(field, query)
15
17
  return if !query || query.empty?
16
18
 
17
- possible_members = @client.group_members('gitlab-com', query: query)
19
+ possible_members = retry_on_error { @client.group_members('gitlab-com', query: query) }
18
20
  if field === :email
19
21
  possible_members.first
20
22
  else
@@ -22,31 +24,48 @@ module PeopleGroup
22
24
  end
23
25
  end
24
26
 
27
+ def find_gitlabber_on(field, query, group)
28
+ return if !query || query.empty?
29
+
30
+ possible_members = retry_on_error { @client.group_members(group, query: query) }
31
+ if field === :email
32
+ possible_members.first
33
+ else
34
+ possible_members.find { |team_member| team_member.public_send(field) === query }
35
+ end
36
+ end
37
+
38
+ def remove_group_member(group, user_id)
39
+ retry_on_error { @client.remove_group_member(group, user_id) }
40
+ end
41
+
25
42
  def create_issue(project, title, options = {})
26
- @client.create_issue(project, title, options)
43
+ retry_on_error do
44
+ @client.create_issue(project, title, options)
45
+ end
27
46
  end
28
47
 
29
48
  def create_issue_note(project, id, text)
30
- @client.create_issue_note(project, id, text)
49
+ retry_on_error { @client.create_issue_note(project, id, text) }
31
50
  end
32
51
 
33
52
  def get_onboarding_issues(project, args)
34
- @client.issues(project, args).auto_paginate
53
+ retry_on_error { @client.issues(project, args).auto_paginate }
35
54
  end
36
55
 
37
56
  def get_issues(project, args)
38
- @client.issues(project, args).auto_paginate
57
+ retry_on_error { @client.issues(project, args).auto_paginate }
39
58
  end
40
59
 
41
60
  def find_or_create_epic(group_id, title, options = {})
42
61
  epic = find_epic(group_id, title)
43
62
  reopen_epic(epic) if epic && epic.state == 'closed'
44
63
  options[:confidential] = true
45
- epic || @client.create_epic(group_id, title, options)
64
+ epic || retry_on_error { @client.create_epic(group_id, title, options) }
46
65
  end
47
66
 
48
67
  def commit_new_files_to_new_merge_request(project_id, branch_name, new_files, commit_message, description = nil)
49
- @client.create_branch(project_id, branch_name, 'master')
68
+ retry_on_error { @client.create_branch(project_id, branch_name, 'master') }
50
69
  actions = []
51
70
  new_files.each do |file|
52
71
  actions << {
@@ -56,11 +75,11 @@ module PeopleGroup
56
75
  }
57
76
  end
58
77
 
59
- @client.create_commit(project_id, branch_name, commit_message, actions)
78
+ retry_on_error { @client.create_commit(project_id, branch_name, commit_message, actions) }
60
79
 
61
80
  options = { source_branch: branch_name, target_branch: 'master', remove_source_branch: true }
62
81
  options[:description] = description if description
63
- @client.create_merge_request(project_id, commit_message, options)
82
+ retry_on_error { @client.create_merge_request(project_id, commit_message, options) }
64
83
  end
65
84
 
66
85
  def commit_change_to_new_merge_request_v2(project_id, branch_name, commit_message, description = nil, files_to_delete = [], files_to_update = [])
@@ -85,16 +104,16 @@ module PeopleGroup
85
104
 
86
105
  return unless actions.any?
87
106
 
88
- @client.create_branch(project_id, branch_name, 'master')
89
- @client.create_commit(project_id, branch_name, commit_message, actions)
107
+ retry_on_error { @client.create_branch(project_id, branch_name, 'master') }
108
+ retry_on_error { @client.create_commit(project_id, branch_name, commit_message, actions) }
90
109
 
91
110
  options = { source_branch: branch_name, target_branch: 'master', remove_source_branch: true }
92
111
  options[:description] = description if description
93
- @client.create_merge_request(project_id, commit_message, options)
112
+ retry_on_error { @client.create_merge_request(project_id, commit_message, options) }
94
113
  end
95
114
 
96
115
  def commit_change_to_new_merge_request(project_id, branch_name, file_path, file_with_change, commit_message, description = nil)
97
- @client.create_branch(project_id, branch_name, 'master')
116
+ retry_on_error { @client.create_branch(project_id, branch_name, 'master') }
98
117
  actions = [
99
118
  {
100
119
  action: 'update',
@@ -102,49 +121,59 @@ module PeopleGroup
102
121
  content: file_with_change
103
122
  }
104
123
  ]
105
- @client.create_commit(project_id, branch_name, commit_message, actions)
124
+ retry_on_error { @client.create_commit(project_id, branch_name, commit_message, actions) }
106
125
 
107
126
  options = { source_branch: branch_name, target_branch: 'master', remove_source_branch: true }
108
127
  options[:description] = description if description
109
- @client.create_merge_request(project_id, commit_message, options)
128
+ retry_on_error { @client.create_merge_request(project_id, commit_message, options) }
110
129
  end
111
130
 
112
131
  def create_epic_note(group_id, epic_id, text)
113
- @client.create_epic_note(group_id, epic_id, text)
132
+ retry_on_error { @client.create_epic_note(group_id, epic_id, text) }
114
133
  end
115
134
 
116
135
  def get_epics(group_id, options = {})
117
- @client.epics(group_id, options).auto_paginate
136
+ retry_on_error { @client.epics(group_id, options).auto_paginate }
118
137
  end
119
138
 
120
139
  def get_issue_epics(group_id, epic_iid)
121
- @client.epic_issues(group_id, epic_iid)
140
+ retry_on_error { @client.epic_issues(group_id, epic_iid) }
122
141
  end
123
142
 
124
143
  private
125
144
 
145
+ def retry_on_error
146
+ retries = 0
147
+
148
+ begin
149
+ yield
150
+ rescue Gitlab::Error::InternalServerError
151
+ retry if (retries += 1) < MAX_RETRIES
152
+ end
153
+ end
154
+
126
155
  def find_epic(group_id, title)
127
156
  args = {
128
157
  search: title
129
158
  }
130
- epics = @client.epics(group_id, args).auto_paginate
159
+ epics = retry_on_error { @client.epics(group_id, args).auto_paginate }
131
160
  epics.first
132
161
  end
133
162
 
134
163
  def create_branch(project_id, branch_name)
135
- @client.create_branch(project_id, branch_name, 'master')
164
+ retry_on_error { @client.create_branch(project_id, branch_name, 'master') }
136
165
  end
137
166
 
138
167
  def create_merge_request(project_id, title, options = {})
139
- @client.create_merge_request(project_id, title, options)
168
+ retry_on_error { @client.create_merge_request(project_id, title, options) }
140
169
  end
141
170
 
142
171
  def create_commit(project_id, branch, commit_message, actions)
143
- @client.create_commit(project_id, branch, commit_message, actions, {})
172
+ retry_on_error { @client.create_commit(project_id, branch, commit_message, actions, {}) }
144
173
  end
145
174
 
146
175
  def reopen_epic(epic)
147
- @client.edit_epic(epic.group_id, epic.iid, { state_event: 'reopen' })
176
+ retry_on_error { @client.edit_epic(epic.group_id, epic.iid, { state_event: 'reopen' }) }
148
177
  end
149
178
  end
150
179
  end
@@ -29,8 +29,12 @@ module PeopleGroup
29
29
  channels.reject(&:is_private)&.map(:name)
30
30
  end
31
31
 
32
- def send_message(channel:, text:, as_user: true, attachments: [], thread_ts: nil, reply_broadcast: false)
33
- @client.chat_postMessage(channel: channel, text: text, as_user: true, attachments: attachments, unfurl_links: false, thread_ts: thread_ts, reply_broadcast: reply_broadcast)
32
+ def link_for_message(channel:, timestamp:)
33
+ @client.chat_getPermalink(channel: channel, message_ts: timestamp)
34
+ end
35
+
36
+ def send_message(channel:, text: '', as_user: true, attachments: [], thread_ts: nil, reply_broadcast: false, formatted_message: [])
37
+ @client.chat_postMessage(channel: channel, text: text, as_user: true, attachments: attachments, unfurl_links: false, thread_ts: thread_ts, reply_broadcast: reply_broadcast, blocks: formatted_message)
34
38
  end
35
39
 
36
40
  def update_message(channel:, timestamp:, text:, attachments: [])
@@ -2,6 +2,6 @@
2
2
 
3
3
  module PeopleGroup
4
4
  module Connectors
5
- VERSION = '0.1.20'
5
+ VERSION = '0.1.27'
6
6
  end
7
7
  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.1.20
4
+ version: 0.1.27
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: 2021-02-18 00:00:00.000000000 Z
11
+ date: 2021-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gitlab