import axios from "axios";
import crypto from "crypto";

const baseurl = process.env.NEXT_PUBLIC_BASE_URL;
const key = process.env.NEXT_PUBLIC_KEY || '';
const secret = process.env.NEXT_PUBLIC_SECRET || '';
const host = process.env.NEXT_PUBLIC_HOST;


const axiosInterceptorInstance = axios.create({
  baseURL: baseurl,
  headers: {
    "Content-Type": "application/json",
  },
});

axiosInterceptorInstance.interceptors.request.use((config) => {
  const timeStamp = Math.floor(Date.now());
  const body = { timestamp: timeStamp };

  const payload = Buffer.from(JSON.stringify(body)).toString();
  const signature = crypto
    .createHmac("sha256", secret)
    .update(payload)
    .digest("hex");

  config.headers["X-AUTH-APIKEY"] = key;
  config.headers["X-AUTH-SIGNATURE"] = signature;
  config.headers["X-AUTH-TIMESTAMP"] = timeStamp.toString();
  config.headers["x-host"] = config.headers["x-host"] || host;
  return config;
});

export default axiosInterceptorInstance;
