class Multiwoven::Integrations::Core::BaseConnector
def check_connection(_connection_config)
def check_connection(_connection_config) raise "Not implemented" # returns Protocol.ConnectionStatus end
def connector_spec
def connector_spec @connector_spec ||= begin spec_json = keys_to_symbols(read_json(CONNECTOR_SPEC_PATH)).to_json # returns Protocol::ConnectorSpecification ConnectorSpecification.from_json(spec_json) end end
def discover(_connection_config)
def discover(_connection_config) raise "Not implemented" # returns Protocol::Catalog end
def failure_status(error)
def failure_status(error) message = error&.message || "failed" ConnectionStatus.new(status: ConnectionStatusType["failed"], message: message).to_multiwoven_message end
def meta_data
def meta_data client_meta_data = read_json(META_DATA_PATH).deep_symbolize_keys icon_name = client_meta_data[:data][:icon] icon_url = "https://raw.githubusercontent.com/Multiwoven/multiwoven/main/integrations#{relative_path}/#{icon_name}" client_meta_data[:data][:icon] = icon_url # returns hash @meta_data ||= client_meta_data end
def read_json(file_path)
def read_json(file_path) path = Object.const_source_location(self.class.to_s)[0] connector_folder = File.dirname(path) file_path = File.join( "#{connector_folder}/", file_path ) file_contents = File.read(file_path) JSON.parse(file_contents) end
def relative_path
def relative_path path = Object.const_source_location(self.class.to_s)[0] connector_folder = File.dirname(path) marker = "/lib/multiwoven/integrations/" parts = connector_folder.split(marker) marker + parts.last if parts.length > 1 end
def success_status
def success_status ConnectionStatus.new(status: ConnectionStatusType["succeeded"]).to_multiwoven_message end