lib/connectors/gitlab/connector.rb (55 lines of code) (raw):

# # Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one # or more contributor license agreements. Licensed under the Elastic License; # you may not use this file except in compliance with the Elastic License. # # frozen_string_literal: true require 'active_support/core_ext/hash/indifferent_access' require 'connectors/base/connector' require 'connectors/gitlab/extractor' require 'connectors/gitlab/custom_client' require 'connectors/gitlab/adapter' require 'connectors/gitlab/gitlab_advanced_snippet_validator' require 'core/ingestion' module Connectors module GitLab class Connector < Connectors::Base::Connector def self.service_type 'gitlab' end def self.display_name 'GitLab Connector' end def self.configurable_fields { :base_url => { :label => 'Base URL', :value => Connectors::GitLab::DEFAULT_BASE_URL }, :api_key => { :label => 'API Key' } } end def self.advanced_snippet_validators GitLabAdvancedSnippetValidator end def initialize(configuration: {}, job_description: nil) super @extractor = Connectors::GitLab::Extractor.new( :base_url => @configuration.dig(:base_url, :value), :api_token => @configuration.dig(:api_token, :value) ) end def yield_documents next_page_link = nil loop do next_page_link = @extractor.yield_projects_page(next_page_link) do |projects_chunk| projects_chunk.each do |project| yield Connectors::GitLab::Adapter.to_es_document(:project, project) end end break unless next_page_link.present? end end private def do_health_check @extractor.health_check end end end end