class Multiwoven::Integrations::Destination::Airtable::Client

def discover(connection_config)

def discover(connection_config)
  connection_config = connection_config.with_indifferent_access
  base_id = connection_config[:base_id]
  api_key = connection_config[:api_key]
  bases = Multiwoven::Integrations::Core::HttpClient.request(
    AIRTABLE_BASES_ENDPOINT,
    HTTP_GET,
    headers: auth_headers(api_key)
  )
  base = extract_bases(bases).find { |b| b["id"] == base_id }
  base_name = base["name"]
  schema = Multiwoven::Integrations::Core::HttpClient.request(
    AIRTABLE_GET_BASE_SCHEMA_ENDPOINT.gsub("{baseId}", base_id),
    HTTP_GET,
    headers: auth_headers(api_key)
  )
  catalog = build_catalog_from_schema(extract_body(schema), base_id, base_name)
  catalog.to_multiwoven_message
rescue StandardError => e
  handle_exception("AIRTABLE:DISCOVER:EXCEPTION", "error", e)
end