RateLimitActionFilter

com.digitaltangible.playguard.RateLimitActionFilter
abstract class RateLimitActionFilter[R <: (Request)](rateLimiter: RateLimiter)(implicit val executionContext: ExecutionContext) extends ActionFilter[R]

ActionFilter which holds a RateLimiter with a bucket for each key returned by keyFromRequest. Can be used with any Request type. Useful if you want to use content from a wrapped request, e.g. User ID

Attributes

Graph
Supertypes
trait ActionFilter[R]
trait ActionRefiner[R, R]
trait ActionFunction[R, R]
class Object
trait Matchable
class Any
Show all
Known subtypes

Members list

Value members

Abstract methods

def keyFromRequest[A](implicit request: R[A]): Any
def rejectResponse[A](implicit request: R[A]): Future[Result]

Concrete methods

def bypass[A](implicit request: R[A]): Boolean
def filter[A](request: R[A]): Future[Option[Result]]

Determine whether to process a request. This is the main method that an ActionFilter has to implement. It can decide to immediately intercept the request and return a Result (Some), or continue processing (None).

Determine whether to process a request. This is the main method that an ActionFilter has to implement. It can decide to immediately intercept the request and return a Result (Some), or continue processing (None).

Value parameters

request

the input request

Attributes

Returns

An optional Result with which to abort the request

Inherited methods

def andThen[Q[_]](other: ActionFunction[R, Q]): ActionFunction[R, Q]

Compose this ActionFunction with another, with this one applied first.

Compose this ActionFunction with another, with this one applied first.

Value parameters

other

ActionFunction with which to compose

Attributes

Returns

The new ActionFunction

Inherited from:
ActionFunction
def compose[B](other: ActionBuilder[R, B]): ActionBuilder[P, B]

Attributes

Inherited from:
ActionFunction
def compose[Q[_]](other: ActionFunction[Q, R]): ActionFunction[Q, P]

Compose another ActionFunction with this one, with this one applied last.

Compose another ActionFunction with this one, with this one applied last.

Value parameters

other

ActionFunction with which to compose

Attributes

Returns

The new ActionFunction

Inherited from:
ActionFunction
final def invokeBlock[A](request: R[A], block: R[A] => Future[Result]): Future[Result]

Invoke the block. This is the main method that an ActionBuilder has to implement, at this stage it can wrap it in any other actions, modify the request object or potentially use a different class to represent the request.

Invoke the block. This is the main method that an ActionBuilder has to implement, at this stage it can wrap it in any other actions, modify the request object or potentially use a different class to represent the request.

Value parameters

block

The block of code to invoke

request

The request

Attributes

Returns

A future of the result

Inherited from:
ActionRefiner
final protected def refine[A](request: R[A]): Future[Either[Result, R[A]]]

Determine how to process a request. This is the main method than an ActionRefiner has to implement. It can decide to immediately intercept the request and return a Result (Left), or continue processing with a new parameter of type P (Right).

Determine how to process a request. This is the main method than an ActionRefiner has to implement. It can decide to immediately intercept the request and return a Result (Left), or continue processing with a new parameter of type P (Right).

Value parameters

request

the input request

Attributes

Returns

Either a result or a new parameter to pass to the Action block

Inherited from:
ActionFilter

Implicits

Implicits

implicit val executionContext: ExecutionContext

Attributes

Returns

The execution context to run the request in.