import { Router } from "@fastly/expressly";
import { Logger } from "fastly:logger";
import { getGeolocationForIpAddress } from "fastly:geolocation"

const date = new Date(Date.now()).toISOString();
const router = new Router();

router.get("(.*)", async(req, res) => {
    // get geo info
    let geo;
    try {
      geo = getGeolocationForIpAddress(req.ip);
    } catch (error) {
      console.error(error);
    }
    //Format log data as JSON object
    let log_data = {
    "timestamp": date,
    "client_ip": req.ip,
    "geo_city": geo.city,
    "geo_country_code": geo.country_code,
    "request": req.method,
    "host": req.hostname,
    "url": req.url,
    "request_referer": req.headers.get("referer"),
    "request_user_agent": req.headers.get("user-agent"),
    "request_accept_language": req.headers.get("accept-language"),
    "request_accept_charset": req.headers.get("accept-charset")
  };
  //send log data to myBigQueryLogger endpoint
  let logger = new Logger("myBigQueryLogger");
  logger.log(JSON.stringify(log_data));

  res.text("Hello world!");
});

router.listen();