import fs from 'fs';
import moment from "moment";


// const shortenStringsInObject = (obj, maxLength) => {
//     // Kiểm tra nếu obj không phải là một đối tượng hoặc maxLength không phải là một số
//     if (typeof obj !== 'object' || typeof maxLength !== 'number') {
//       return obj;
//     }
  
//     // Duyệt qua các thuộc tính của đối tượng
//     for (const key in obj) {
//       if (obj.hasOwnProperty(key)) {
//         // Kiểm tra nếu thuộc tính là một chuỗi và độ dài của chuỗi lớn hơn maxLength
//         if (typeof obj[key] === 'string' && obj[key].length > maxLength) {
//           // Rút ngắn chuỗi lại maxLength ký tự
//           obj[key] = obj[key].substring(0, maxLength);
//         }
//       }
//     }
  

//     if (Array.isArray(obj) && obj.length > 10) {
//         // Rút ngắn chuỗi lại maxLength ký tự
//         obj = "[Array:"+obj.length+"]\n"+obj.slice(0,15)
//       }

//     return obj;
//   }

export function loggerAPI(req, res, location) {
    let old_data = "";
    let resBody = res.getBody()
    // let body = shortenStringsInObject(resBody, 300)
    try {
      const fileName =
        "./app/store/logsAPI/" +
        moment(Date.now()).format("DD_MM_YYYY").toString() +
        ".log";
  
      let logInfo =
        "\n\n[" +
        moment(Date.now()).format("D/M/YY-HH:mm:ss") +
        "] - " +
        res.getStatus() +
        " - " +
        location +
        "\n------PAYLOAD------\n" +
        JSON.stringify(req.all(), null, 2) +
        "\n------PARAMS-------\n" +
        JSON.stringify(req.params(), null, 2) +
        "\n-----RESPONSE------\n" +
        JSON.stringify(resBody, null, 2) +
        "\n------HEADERS------\n" +
        JSON.stringify(req.headers(), null, 2) +
        "\n\n======================================================================";
  
      fs.exists(fileName, async (exists) => {
        if (exists) {
          old_data = await fs.readFileSync(fileName, "utf8");
          fs.writeFileSync(fileName, old_data + logInfo);
        } else {
          fs.writeFileSync(fileName, old_data + logInfo);
        }
      });
  
    } catch (error) {
      res.status(500).send("CAN'T WRITE LOG");
    }
  }