public virtual Task ReturnQuotaExceededResponse(HttpContext httpContext, ThrottleRule rule)
        {
            var message = string.IsNullOrEmpty(Options.QuotaExceededMessage) ? $"API calls quota exceeded! maximum admitted {rule.Limit} per {rule.Period}." : Options.QuotaExceededMessage;

            httpContext.Response.StatusCode = Options.HttpStatusCode;

            return(httpContext.Response.WriteAsync("{\"message\":\"" + message + "\"}"));
        }
 public virtual void LogBlockedRequest(HttpContext httpContext, ClientRequest request, RequestCounter counter, ThrottleRule rule)
 {
     Logger.LogInformation($"Request {request.Path} from ClientId {request.ClientId} has been blocked, quota {rule.Limit}/{rule.Period} exceeded by {counter.TotalRequests}" +
                           $". Blocked by rule {rule.Endpoint}, TraceIdentifier {httpContext.TraceIdentifier}.");
 }