import {
  CanActivate,
  ExecutionContext,
  Injectable,
  UnauthorizedException,
} from "@nestjs/common";
import { Request } from "express";

@Injectable()
export class ApiKeyGuard implements CanActivate {
  canActivate(context: ExecutionContext): boolean {
    const expected = process.env.HUBEE_WPP_API_KEY;
    if (!expected) {
      throw new UnauthorizedException("HUBEE_WPP_API_KEY not configured");
    }
    const req = context.switchToHttp().getRequest<Request>();
    const key =
      (req.headers["x-api-key"] as string | undefined) ||
      (req.headers["apikey"] as string | undefined);
    if (!key || key !== expected) {
      throw new UnauthorizedException("Invalid API key");
    }
    return true;
  }
}
