refacor: improvement of rate limiting

This commit is contained in:
Jonas Kaninda
2024-11-24 15:59:47 +01:00
parent 3b2889e002
commit 6258b07c82
8 changed files with 57 additions and 30 deletions

View File

@@ -226,6 +226,25 @@ func (Gateway) Setup(conf string) *Gateway {
}
// rateLimitMiddleware returns RateLimitRuleMiddleware, error
func rateLimitMiddleware(input interface{}) (RateLimitRuleMiddleware, error) {
rateLimit := new(RateLimitRuleMiddleware)
var bytes []byte
bytes, err := yaml.Marshal(input)
if err != nil {
return RateLimitRuleMiddleware{}, fmt.Errorf("error parsing yaml: %v", err)
}
err = yaml.Unmarshal(bytes, rateLimit)
if err != nil {
return RateLimitRuleMiddleware{}, fmt.Errorf("error parsing yaml: %v", err)
}
if rateLimit.RequestsPerUnit == 0 {
return RateLimitRuleMiddleware{}, fmt.Errorf("requests per unit not defined")
}
return *rateLimit, nil
}
// getJWTMiddleware returns JWTRuleMiddleware,error
func getJWTMiddleware(input interface{}) (JWTRuleMiddleware, error) {
jWTRuler := new(JWTRuleMiddleware)