class Multiwoven::Integrations::Source::WatsonxData::Client

def get_iam_token(api_key)

def get_iam_token(api_key)
  uri = URI("https://iam.cloud.ibm.com/identity/token")
  request = Net::HTTP::Post.new(uri)
  request["Content-Type"] = "application/x-www-form-urlencoded"
  request.body = "grant_type=urn:ibm:params:oauth:grant-type:apikey&apikey=#{api_key}"
  response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
    http.request(request)
  end
  raise "Failed to get IAM token: #{response.body}" unless response.is_a?(Net::HTTPSuccess)
  JSON.parse(response.body)["access_token"]
end