This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 6060571d02ab1885f2766f75580d54c7e1848a19
Author: Benoit Tellier <[email protected]>
AuthorDate: Fri Jan 28 11:49:06 2022 +0700

    JAMES-3683 Guice injections for the Redis Rate limiter implementation
---
 .../apache/james/rate/limiter/redis/RedisRateLimiter.scala | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git 
a/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiter.scala
 
b/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiter.scala
index e0ecaa3..698d275 100644
--- 
a/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiter.scala
+++ 
b/server/mailet/rate-limiter-redis/src/main/scala/org/apache/james/rate/limiter/redis/RedisRateLimiter.scala
@@ -19,17 +19,29 @@
 
 package org.apache.james.rate.limiter.redis
 
+import com.google.inject.AbstractModule
 import 
es.moki.ratelimitj.core.limiter.request.{AbstractRequestRateLimiterFactory, 
ReactiveRequestRateLimiter, RequestLimitRule}
 import es.moki.ratelimitj.redis.request.{RedisClusterRateLimiterFactory, 
RedisSlidingWindowRequestRateLimiter, RedisRateLimiterFactory => 
RedisSingleInstanceRateLimitjFactory}
 import io.lettuce.core.RedisClient
 import io.lettuce.core.cluster.RedisClusterClient
 import org.apache.james.rate.limiter.api.Increment.Increment
-import org.apache.james.rate.limiter.api.{AcceptableRate, RateExceeded, 
RateLimiter, RateLimiterFactory, RateLimitingKey, RateLimitingResult, Rule, 
Rules}
+import org.apache.james.rate.limiter.api.{AcceptableRate, RateExceeded, 
RateLimiter, RateLimiterFactory, RateLimiterFactoryProvider, RateLimitingKey, 
RateLimitingResult, Rule, Rules}
+import org.apache.mailet.MailetConfig
 import org.reactivestreams.Publisher
 import reactor.core.scala.publisher.SMono
 
 import scala.jdk.CollectionConverters._
 
+class RedisRateLimiterModule() extends AbstractModule {
+  override def configure(): Unit =
+    bind(classOf[RateLimiterFactoryProvider])
+      .to(classOf[RedisRateLimiterFactoryProvider])
+}
+
+class RedisRateLimiterFactoryProvider extends RateLimiterFactoryProvider {
+  override def create(mailetConfig: MailetConfig): RateLimiterFactory = new 
RedisRateLimiterFactory(RedisRateLimiterConfiguration.from(mailetConfig))
+}
+
 class RedisRateLimiterFactory(redisConfiguration: 
RedisRateLimiterConfiguration) extends RateLimiterFactory {
   val rateLimitjFactory: 
AbstractRequestRateLimiterFactory[RedisSlidingWindowRequestRateLimiter] =
     if (redisConfiguration.redisURI.value.size > 1) {

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to