azure-devops-node-api
Version:
Node client for Azure DevOps and TFS REST APIs
46 lines (45 loc) • 1.68 kB
JavaScript
;
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
Object.defineProperty(exports, "__esModule", { value: true });
exports.extractRateLimitHeaders = void 0;
/**
* Extracts rate limit headers from the provided headers and attaches them to the target object
* @param headers - source headers
* @param target - target object to attach rate limit info to
*/
function extractRateLimitHeaders(headers, target) {
if (!headers || !target) {
return;
}
const rateLimit = {};
let hasRateLimitHeader = false;
if (headers['x-ratelimit-resource']) {
rateLimit.resource = headers['x-ratelimit-resource'];
hasRateLimitHeader = true;
}
if (headers['x-ratelimit-delay']) {
rateLimit.delay = parseFloat(headers['x-ratelimit-delay']);
hasRateLimitHeader = true;
}
if (headers['x-ratelimit-limit']) {
rateLimit.limit = parseInt(headers['x-ratelimit-limit'], 10);
hasRateLimitHeader = true;
}
if (headers['x-ratelimit-remaining']) {
rateLimit.remaining = parseInt(headers['x-ratelimit-remaining'], 10);
hasRateLimitHeader = true;
}
if (headers['x-ratelimit-reset']) {
rateLimit.reset = parseInt(headers['x-ratelimit-reset'], 10);
hasRateLimitHeader = true;
}
if (headers['retry-after']) {
rateLimit.retryAfter = parseInt(headers['retry-after'], 10);
hasRateLimitHeader = true;
}
if (hasRateLimitHeader) {
target.rateLimit = rateLimit;
}
}
exports.extractRateLimitHeaders = extractRateLimitHeaders;