summaryrefslogtreecommitdiff
path: root/lib/gitlab/hook_data/key_builder.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/hook_data/key_builder.rb')
-rw-r--r--lib/gitlab/hook_data/key_builder.rb46
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/gitlab/hook_data/key_builder.rb b/lib/gitlab/hook_data/key_builder.rb
new file mode 100644
index 00000000000..8eaf4dfd762
--- /dev/null
+++ b/lib/gitlab/hook_data/key_builder.rb
@@ -0,0 +1,46 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module HookData
+ class KeyBuilder < BaseBuilder
+ alias_method :key, :object
+
+ # Sample data
+ # {
+ # event_name: "key_create",
+ # created_at: "2021-04-19T06:13:24Z",
+ # updated_at: "2021-04-19T06:13:24Z",
+ # key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQClDn/5BaESHlSb3NxQtiUc0BXgK6lsqdAUIdS3lwZ2gbACDhtoLYnc+qhZ4b8gWzE+2A8RmkvLe98T7noRoW4DAYs67NSqMs/kXd2ESPNV8qqv0u7tCxPz+c7DaYp2oC/avlxVQ2AeULZLCEwalYZ7irde0EZMeTwNIRu5s88gOw== dummy@gitlab.com",
+ # id: 1,
+ # username: "johndoe"
+ # }
+
+ def build(event)
+ [
+ event_data(event),
+ timestamps_data,
+ key_data,
+ user_data
+ ].reduce(:merge)
+ end
+
+ private
+
+ def key_data
+ {
+ key: key.key,
+ id: key.id
+ }
+ end
+
+ def user_data
+ user = key.user
+ return {} unless user
+
+ {
+ username: user.username
+ }
+ end
+ end
+ end
+end