File: hook.rb

package info (click to toggle)
gitlab 17.6.5-19
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 629,368 kB
  • sloc: ruby: 1,915,304; javascript: 557,307; sql: 60,639; xml: 6,509; sh: 4,567; makefile: 1,239; python: 406
file content (39 lines) | stat: -rw-r--r-- 1,938 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# frozen_string_literal: true

module API
  module Entities
    class Hook < Grape::Entity
      expose :id, documentation: { type: 'string', example: 1 }
      expose :url, documentation: { type: 'string', example: 'https://webhook.site' }
      expose :name, documentation: { type: 'string', example: 'Hook name' }
      expose :description, documentation: { type: 'string', example: 'Hook description' }
      expose :created_at, documentation: { type: 'dateTime', example: '2012-05-28T04:42:42-07:00' }
      expose :push_events, documentation: { type: 'boolean' }
      expose :tag_push_events, documentation: { type: 'boolean' }
      expose :merge_requests_events, documentation: { type: 'boolean' }
      expose :repository_update_events, documentation: { type: 'boolean' }
      expose :enable_ssl_verification, documentation: { type: 'boolean' }

      expose :alert_status, documentation: { type: 'symbol', example: :executable }
      expose :disabled_until, documentation: { type: 'dateTime', example: '2012-05-28T04:42:42-07:00' }
      expose :url_variables,
        if: ->(_, options) { options[:with_url_variables] != false },
        documentation: { type: 'Hash', example: { "token" => "secr3t" }, is_array: true }
      expose :push_events_branch_filter, documentation: { type: 'string', example: 'my-branch-*' }
      expose :branch_filter_strategy, documentation: { type: 'string', example: 'wildcard' }

      expose :custom_webhook_template, documentation: { type: 'string', example: '{"event":"{{object_kind}}"}' }
      expose :custom_headers,
        if: ->(_, options) { options[:with_custom_headers] != false },
        documentation: { type: 'Hash', example: { "X-Custom-Header" => "value" }, is_array: true }

      def url_variables
        object.url_variables.keys.map { { key: _1 } }
      end

      def custom_headers
        object.custom_headers.keys.map { { key: _1 } }
      end
    end
  end
end