openSUSE/open-build-service

View on GitHub
src/api/app/models/gitlab_payload.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# This class is used as a common foundation for the merge request, push and tag push events coming from Gitlab.
class GitlabPayload < ScmPayload
  attr_reader :http_url

  def initialize(webhook_payload)
    super
    @http_url = webhook_payload.dig(:project, :http_url)
  end

  def default_payload
    {
      scm: 'gitlab',
      object_kind: webhook_payload[:object_kind],
      http_url: http_url,
      api_endpoint: api_endpoint
    }
  end

  private

  def api_endpoint
    return unless http_url

    uri = URI.parse(http_url)
    "#{uri.scheme}://#{uri.host}"
  end
end