node-hue-api
Version:
Philips Hue API Library for Node.js
43 lines (42 loc) • 1.59 kB
JavaScript
// Set up a limiter on the group state changes from the library to once per second as per guidance documentation
const DEFAULT_GROUP_RATE_LIMITS = {
maxConcurrent: 1,
minTime: 1000 // how long to wait before launching another request in ms
};
// As per Bridge documentation guidance, limit the number of calls to the light state changes to 10 per second max
const DEFAULT_LIGHT_RATE_LIMITS = {
maxConcurrent: 1,
minTime: 60 // how long to wait before launching another request in ms
};
// Limiting the general rate limits across the API to a hue bridge
const DEFAULT_RATE_LIMITS = {
maxConcurrent: 4,
minTime: 50 // how long to wait before launching another request in ms
};
export class HueApiRateLimits {
constructor(rateLimits) {
if (rateLimits) {
this._rateLimits = {
transport: rateLimits.transport || DEFAULT_RATE_LIMITS,
group: rateLimits.group || DEFAULT_GROUP_RATE_LIMITS,
light: rateLimits.light || DEFAULT_LIGHT_RATE_LIMITS
};
}
else {
this._rateLimits = {
transport: DEFAULT_RATE_LIMITS,
group: DEFAULT_GROUP_RATE_LIMITS,
light: DEFAULT_LIGHT_RATE_LIMITS,
};
}
}
get groupRateLimit() {
return this._rateLimits.group || DEFAULT_GROUP_RATE_LIMITS;
}
get lightRateLimit() {
return this._rateLimits.light || DEFAULT_LIGHT_RATE_LIMITS;
}
get transportRateLimit() {
return this._rateLimits.transport || DEFAULT_RATE_LIMITS;
}
}