import { Request } from 'express';

export interface RealIpInfo {
  ip: string | undefined;
  countryCode?: string;
}

export function getRealIpInfo(req: Request): RealIpInfo {
  const ip =
    (req.headers['cf-connecting-ip'] as string) ||
    (req.headers['x-real-ip'] as string) ||
    (typeof req.headers['x-forwarded-for'] === 'string' ? req.headers['x-forwarded-for'].split(',')[0] : req.connection.remoteAddress);
  const countryCode = req.headers['cf-ipcountry'] as string;

  return { ip, countryCode };
}
