using System.Threading;
using System.Threading.Tasks;
namespace Dpz.Core.Infrastructure.RateLimiting;
/// <summary>
/// 基于行为的IP限流服务接口
/// 专注于限制可疑行为,不限制正常请求频率
/// </summary>
public interface IIpRateLimitService
{
/// <summary>
/// 检查IP是否被限流
/// 只检查状态,不记录任何访问信息
/// </summary>
/// <param name="ip">客户端IP</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>限流检查结果</returns>
Task<RateLimitResult> CheckLimitStatusAsync(
string ip,
CancellationToken cancellationToken = default
);
/// <summary>
/// 记录IP被拦截事件
/// 当安全中间件检测到可疑行为时调用
/// </summary>
/// <param name="ip">客户端IP</param>
/// <param name="reason">拦截原因(可选,用于日志)</param>
/// <returns></returns>
Task RecordBlockAsync(string ip, string? reason = null);
// 注意:移除了以下方法
// - CheckAndApplyRateLimitAsync (分离为单纯的检查)
// - RecordAccessAsync (不再记录正常访问)
}