Class: GitlabApi
- Inherits:
-
Rubiclifier::BaseApi
- Object
- Rubiclifier::BaseApi
- GitlabApi
- Defined in:
- lib/gitlab_api.rb
Constant Summary collapse
- HTTP =
GraphQL::Client::HTTP.new(StoredValues.base_api_url) do def headers(context) { "Authorization": "Bearer #{StoredValues.api_token}" } end end
- Schema =
GraphQL::Client.load_schema(HTTP)
- Client =
GraphQL::Client.new(schema: Schema, execute: HTTP)
- OpenMrCommentQuery =
Client.parse "query {\n group(fullPath: \"\#{StoredValues.team_name}\") {\n groupMembers {\n nodes {\n user {\n name\n username\n openMRs: assignedMergeRequests(state: opened) {\n nodes {\n createdAt\n headPipeline {\n updatedAt\n status\n }\n participants {\n nodes {\n username\n }\n }\n approved\n title\n project {\n group {\n path\n }\n name\n }\n id\n webUrl\n discussions {\n nodes {\n notes {\n nodes {\n body\n system\n createdAt\n id\n author {\n username\n name\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}\n"
- MergedMrCommentQuery =
Client.parse "query($mergedAfter: Time) {\n group(fullPath: \"\#{StoredValues.team_name}\") {\n groupMembers {\n nodes {\n user {\n name\n username\n mergedMRs: assignedMergeRequests(state: merged, mergedAfter: $mergedAfter) {\n nodes {\n createdAt\n headPipeline {\n updatedAt\n status\n }\n participants {\n nodes {\n username\n }\n }\n approved\n title\n project {\n group {\n path\n }\n name\n }\n id\n webUrl\n }\n }\n }\n }\n }\n }\n}\n"
Class Method Summary collapse
- .all_code_changes ⇒ Object
- .code_change_activity_from_json(code_change, message) ⇒ Object
- .code_change_from_graphql(data, name, username, is_merged) ⇒ Object
- .code_change_url(code_change) ⇒ Object
- .favicon ⇒ Object
- .invalid_credentials_error ⇒ Object
Class Method Details
.all_code_changes ⇒ Object
142 143 144 145 146 147 148 149 150 |
# File 'lib/gitlab_api.rb', line 142 def self.all_code_changes open_mr_query = Client.query(OpenMrCommentQuery) open_mrs = open_mr_query.data.group.group_members.nodes.flat_map { |n| n.user.open_m_rs.nodes.map { |n2| {user: n.user.name, username: n.user.username, mr: n2 } } } merged_mr_query = Client.query(MergedMrCommentQuery, variables: {mergedAfter: Time.now - 61}) merged_mrs = merged_mr_query.data.group.group_members.nodes.flat_map { |n| n.user.merged_m_rs.nodes.map { |n2| {user: n.user.name, username: n.user.username, mr: n2 } } } merged_mrs = merged_mrs.map { |mr| code_change_from_graphql(mr[:mr], mr[:user], mr[:username], true) } open_mrs = open_mrs.map { |mr| code_change_from_graphql(mr[:mr], mr[:user], mr[:username], false) } open_mrs.concat(merged_mrs) end |
.code_change_activity_from_json(code_change, message) ⇒ Object
169 170 171 |
# File 'lib/gitlab_api.rb', line 169 def self.code_change_activity_from_json(code_change, ) GitlabCodeChangeActivity.new(.id, ..name, ..username == StoredValues.username, .body, Time.parse(.created_at), code_change) end |
.code_change_from_graphql(data, name, username, is_merged) ⇒ Object
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/gitlab_api.rb', line 152 def self.code_change_from_graphql(data, name, username, is_merged) includes_self = data.participants.nodes.map { |p| p.username }.include?(StoredValues.username) code_change = CodeChange.new(data.id, name, "#{data.project.group&.path}/#{data.project.name}", data.title, data.web_url, data.head_pipeline&.updated_at && Time.parse(data.head_pipeline&.updated_at), data.head_pipeline&.status, data.approved, is_merged, username == StoredValues.username, includes_self) if is_merged code_change.code_change_activity = [ GitlabCodeChangeActivity.new("#{data.id}-merged-placeholder", name, true, "placeholder", Time.now() - 10000, code_change), GitlabCodeChangeActivity.new("#{data.id}-merged", name, false, "merged", Time.now(), code_change) ] else = data.discussions.nodes.flat_map { |n| n.notes.nodes } code_change.code_change_activity = .map { |m| code_change_activity_from_json(code_change, m) } code_change.generate_additional_activity end code_change.persist code_change end |
.code_change_url(code_change) ⇒ Object
177 178 179 |
# File 'lib/gitlab_api.rb', line 177 def self.code_change_url(code_change) code_change.web_url end |
.favicon ⇒ Object
173 174 175 |
# File 'lib/gitlab_api.rb', line 173 def self.favicon "https://about.gitlab.com/images/press/logo/png/gitlab-icon-rgb.png" end |
.invalid_credentials_error ⇒ Object
133 134 135 136 137 138 139 140 |
# File 'lib/gitlab_api.rb', line 133 def self.invalid_credentials_error Rubiclifier::Notification.new( "Incorrect Credentials", "Trying running `code_review_notifier --setup` again." ).send sleep(120) exit end |