const dns = require('dns');

/* Lambda function to fetch the IP address of a given URL */
exports.handler = function (event, context, callback) {
  const addressParam = (event.queryStringParameters || event.query).url;
  
  if (!addressParam) {
    callback(null, errorResponse('Address parameter is missing.'));
    return;
  }

  const address = decodeURIComponent(addressParam)
    .replaceAll('https://', '')
    .replaceAll('http://', '');

  dns.lookup(address, (err, ip, family) => {
    if (err) {
      callback(null, errorResponse(err.message));
    } else {
      callback(null, {
        statusCode: 200,
        body: JSON.stringify({ ip, family }),
      });
    }
  });
};

const errorResponse = (message, statusCode = 444) => {
  return {
    statusCode: statusCode,
    body: JSON.stringify({ error: message }),
  };
};
