lib/connectors/example/connector.rb (56 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 'connectors/base/connector'
require 'connectors/example/example_advanced_snippet_validator'
require 'core/filtering/validation_status'
require 'utility'
module Connectors
module Example
class Connector < Connectors::Base::Connector
def self.service_type
'example'
end
def self.display_name
'Example Connector'
end
# Field 'Foo' won't have a default value. Field 'Bar' will have the default value 'Value'.
def self.configurable_fields
{
'foo' => {
'label' => 'Foo',
'value' => nil
},
:bar => {
:label => 'Bar',
:value => 'Value'
}
}
end
def initialize(configuration: {}, job_description: nil)
super
end
def do_health_check
# Do the health check by trying to access 3rd-party system just to verify that everything is set up properly.
#
# To emulate unhealthy 3rd-party system situation, uncomment the following line:
# raise 'something went wrong'
end
def self.advanced_snippet_validators
ExampleAdvancedSnippetValidator
end
def yield_documents
attachments = [
load_attachment('first_attachment.txt'),
load_attachment('second_attachment.txt'),
load_attachment('third_attachment.txt'),
]
attachments.each_with_index do |att, index|
data = { id: (index + 1).to_s, name: "example document #{index + 1}", _attachment: File.read(att) }
# Uncomment one of these two lines to simulate longer running sync jobs
#
# sleep(rand(10..60).seconds)
# sleep(rand(1..10).minutes)
yield data
end
end
private
def load_attachment(path)
attachment_dir = "#{File.dirname(__FILE__)}/attachments"
attachment_path = "#{attachment_dir}/#{path}"
unless File.exist?(attachment_path)
raise "Attachment at location '#{attachment_path}' doesn't exist. Attachments should be located under #{attachment_dir}"
end
File.open(attachment_path)
end
end
end
end