import { performance } from "perf_hooks";

import createLogger from "utils/logger";
import { httpProxy } from "utils/proxy/http";

const logger = createLogger("ping");

export default async function handler(req, res) {
    const { ping: pingURL } = req.query;

    if (!pingURL) {
        logger.debug("No ping URL specified");
        return res.status(400).send({
        error: "No ping URL given",
        });
    }
    
    let startTime = performance.now();
    let [status] = await httpProxy(pingURL, {
      method: "HEAD"
    });
    let endTime = performance.now();
    
    if (status > 403) {
      // try one more time as a GET in case HEAD is rejected for whatever reason
      startTime = performance.now();
      [status] = await httpProxy(pingURL);
      endTime = performance.now();
    }

    return res.status(200).json({
      status,
      latency: endTime - startTime
    });
}
