14 lines
555 B
TypeScript
14 lines
555 B
TypeScript
|
|
import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common';
|
||
|
|
import { CircuitBreakerService } from './circuitBreakerService';
|
||
|
|
|
||
|
|
@Injectable()
|
||
|
|
export class CircuitBreakerGuard implements CanActivate {
|
||
|
|
constructor(private readonly circuitBreakerService: CircuitBreakerService) {}
|
||
|
|
|
||
|
|
canActivate(context: ExecutionContext): boolean {
|
||
|
|
const request = context.switchToHttp().getRequest();
|
||
|
|
const serviceName = `${request.method}:${request.route?.path || 'unknown'}`;
|
||
|
|
|
||
|
|
return this.circuitBreakerService.isOpen(serviceName);
|
||
|
|
}
|
||
|
|
}
|