UNPKG

auth0

Version:
77 lines 2.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HttpResponseHeadersUtils = void 0; class HttpResponseHeadersUtils { /** * Gets the client token quota limits from the provided headers. * * @param headers the HTTP response headers. * @return a TokenQuotaBucket containing client rate limits, or null if not present. */ static getClientQuotaLimit(headers) { const getHeaderValue = (key) => { if (headers instanceof Headers) { return headers.get(key); } return headers[key] || null; }; const quotaHeader = getHeaderValue('auth0-client-quota-limit'); return quotaHeader ? this.parseQuota(quotaHeader) : null; } /** * Gets the organization token quota limits from the provided headers. * * @param headers the HTTP response headers. * @return a TokenQuotaBucket containing organization rate limits, or null if not present. */ static getOrganizationQuotaLimit(headers) { const getHeaderValue = (key) => { if (headers instanceof Headers) { return headers.get(key); } return headers[key] || null; }; const quotaHeader = getHeaderValue('auth0-organization-quota-limit'); return quotaHeader ? this.parseQuota(quotaHeader) : null; } /** * Parses a token quota string into a TokenQuotaBucket. * * @param tokenQuota the token quota string. * @return a TokenQuotaBucket containing parsed rate limits. */ static parseQuota(tokenQuota) { let perHour; let perDay; const parts = tokenQuota.split(','); for (const part of parts) { const attributes = part.split(';'); let quota = 0, remaining = 0, resetAfter = 0; for (const attribute of attributes) { const [key, value] = attribute.split('=').map((s) => s.trim()); if (!key || !value) continue; switch (key) { case 'q': quota = parseInt(value, 10); break; case 'r': remaining = parseInt(value, 10); break; case 't': resetAfter = parseInt(value, 10); break; } } if (attributes.length > 0 && attributes[0].includes('per_hour')) { perHour = { quota, remaining, resetAfter }; } else if (attributes.length > 0 && attributes[0].includes('per_day')) { perDay = { quota, remaining, resetAfter }; } } return { perHour, perDay }; } } exports.HttpResponseHeadersUtils = HttpResponseHeadersUtils; //# sourceMappingURL=httpResponseHeadersUtils.js.map