Skip to content

meteor-bits/meteor-ddp-rate-limiter-mixin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

meteor-ddp-rate-limiter-mixin

This is a mixin for mdg:validated-method to add rate limitation support to Meteor's methods.

Installation

meteor add liberation:ddp-rate-limiter-mixin

Basic examples

Some examples in pseudo code:

import { PermissionsMixin } from 'meteor/didericis:permissions-mixin'
import DDPRateLimiterMixin from 'meteor/liberation:ddp-rate-limiter-mixin'

// we can create instance of DDPRateLimiterMixin with default values for all methods.
const ddpRateLimiterMixin = DDPRateLimiterMixin({
  numRequests: 50,
  timeInterval: 1000
  ...
})

// or just do it with default settings
const ddpRateLimiterMixin = DDPRateLimiterMixin()

export const baseMixinsSet = [
  PermissionsMixin, ddpRateLimiterMixin
]
import { baseMixinsSet } from './methodMixins.js'

// with default settings for DDPRateLimiterMixin
void new ValidatedMethod({
  name: 'tasks.createTask',
  mixins: baseMixinsSet,
  allow: [{
    roles: ['pm'],
    group: Roles.GLOBAL_GROUP
  }],
  validate: new SimpleSchema({ ... }).validator(),
  run ({ taskData }) {
    ...
  }
})

// or with custom settings for DDPRateLimiterMixin
void new ValidatedMethod({
  name: 'tasks.removeTask',
  mixins: baseMixinsSet,
  allow: [{
    roles: ['pm'],
    group: Roles.GLOBAL_GROUP
  }],
  rateLimit: {
    matcher: {},                      // optional parameter
    clientAddress () { return true }, // optional parameter
    connectionId () { return true },  // optional parameter
    userId () { return true },        // optional parameter
    numRequests: 50,                  // optional parameter
    timeInterval: 1000                // optional parameter
  },
  validate: new SimpleSchema({ ... }).validator(),
  run ({ taskData }) {
    ...
  }
})

For more info check the links:

About

This is a mixin for mdg:validated-method to add rate limitation support to Meteor's methods.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors