Skip to content
Snippets Groups Projects
Unverified Commit f32871e4 authored by Sergei Zharinov's avatar Sergei Zharinov Committed by GitHub
Browse files

refactor(util/http): Refresh queue implementation (#13417)

* refactor(util/http): Refresh queue implementation

* Use utils for url parsing
parent b94c20be
No related merge requests found
import { getQueue } from './queue'; import { mocked } from '../../../test/util';
import * as _hostRules from './host-rules';
import { clear, getQueue } from './queue';
jest.mock('./host-rules');
const hostRules = mocked(_hostRules);
describe('util/http/queue', () => { describe('util/http/queue', () => {
beforeEach(() => {
hostRules.getRequestLimit.mockReturnValue(143);
clear();
});
it('returns null for invalid URL', () => { it('returns null for invalid URL', () => {
expect(getQueue(null)).toBeNull(); expect(getQueue('$#@!')).toBeNull();
});
it('returns queue for valid url', () => {
const q1a = getQueue('https://example.com');
const q1b = getQueue('https://example.com');
const q2a = getQueue('https://example.com:8080');
const q2b = getQueue('https://example.com:8080');
expect(q1a).not.toBeNull();
expect(q1a).toBe(q1b);
expect(q2a).not.toBeNull();
expect(q2a).toBe(q2b);
expect(q1a).not.toBe(q2a);
expect(q1a).not.toBe(q2b);
expect(q1b).not.toBe(q2a);
expect(q1b).not.toBe(q2b);
}); });
}); });
import URL from 'url';
import PQueue from 'p-queue'; import PQueue from 'p-queue';
import { parseUrl } from '../url';
import { getRequestLimit } from './host-rules'; import { getRequestLimit } from './host-rules';
const hostQueues = new Map<string | null, PQueue | null>(); const hostQueues = new Map<string | null, PQueue | null>();
function getUrlHost(url: string): string | null {
try {
return URL.parse(url).host;
} catch (e) {
return null;
}
}
export function getQueue(url: string): PQueue | null { export function getQueue(url: string): PQueue | null {
const host = getUrlHost(url); const host = parseUrl(url)?.host;
if (!host) { if (!host) {
return null; return null;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment