const traceroute = require('traceroute');
const url = require('url');
const middleware = require('./_common/middleware');

const executeTraceroute = async (urlString, context) => {
  // Parse the URL and get the hostname
  const urlObject = url.parse(urlString);
  const host = urlObject.hostname;

  if (!host) {
    throw new Error('Invalid URL provided');
  }

  // Traceroute with callback
  const result = await new Promise((resolve, reject) => {
    traceroute.trace(host, (err, hops) => {
      if (err || !hops) {
        reject(err || new Error('No hops found'));
      } else {
        resolve(hops);
      }
    });
  });

  return {
    message: "Traceroute completed!",
    result,
  };
};

exports.handler = middleware(executeTraceroute);