Compare commits
No commits in common. "1fb7d384fb438294ee147e3aecf5ae57f846679e" and "77b40817f28428fd6eadbd03294cd62305c1c7bc" have entirely different histories.
1fb7d384fb
...
77b40817f2
|
@ -1,11 +1,11 @@
|
||||||
{
|
{
|
||||||
"name": "traxxx",
|
"name": "traxxx",
|
||||||
"version": "1.184.2",
|
"version": "1.184.1",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"version": "1.184.2",
|
"version": "1.184.1",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@casl/ability": "^5.2.2",
|
"@casl/ability": "^5.2.2",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "traxxx",
|
"name": "traxxx",
|
||||||
"version": "1.184.2",
|
"version": "1.184.1",
|
||||||
"description": "All the latest porn releases in one place",
|
"description": "All the latest porn releases in one place",
|
||||||
"main": "src/app.js",
|
"main": "src/app.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const config = require('config');
|
const config = require('config');
|
||||||
const Promise = require('bluebird');
|
|
||||||
const bhttp = require('bhttp');
|
const bhttp = require('bhttp');
|
||||||
const util = require('util');
|
const util = require('util');
|
||||||
const stream = require('stream');
|
const stream = require('stream');
|
||||||
|
@ -16,12 +15,7 @@ const argv = require('../argv');
|
||||||
const pipeline = util.promisify(stream.pipeline);
|
const pipeline = util.promisify(stream.pipeline);
|
||||||
const limiters = {};
|
const limiters = {};
|
||||||
|
|
||||||
Promise.config({
|
|
||||||
cancellation: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
const defaultOptions = {
|
const defaultOptions = {
|
||||||
timeout: 60000,
|
|
||||||
encodeJSON: true,
|
encodeJSON: true,
|
||||||
headers: {
|
headers: {
|
||||||
'user-agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1',
|
'user-agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1',
|
||||||
|
@ -73,7 +67,6 @@ function getLimiter(options = {}, url) {
|
||||||
limiters[interval][concurrency] = new Bottleneck({
|
limiters[interval][concurrency] = new Bottleneck({
|
||||||
minTime: interval,
|
minTime: interval,
|
||||||
maxConcurrent: concurrency,
|
maxConcurrent: concurrency,
|
||||||
timeout: (options.timeout || defaultOptions.timeout) + 10000, // timeout 10 seconds after bhttp should
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,7 +83,7 @@ async function request(method = 'get', url, body, requestOptions = {}, limiter)
|
||||||
...defaultOptions.headers,
|
...defaultOptions.headers,
|
||||||
...requestOptions.headers,
|
...requestOptions.headers,
|
||||||
},
|
},
|
||||||
responseTimeout: requestOptions.responseTimeout || requestOptions.timeout || defaultOptions.timeout,
|
responseTimeout: requestOptions.responseTimeout || requestOptions.timeout || 60000,
|
||||||
stream: !!requestOptions.destination,
|
stream: !!requestOptions.destination,
|
||||||
session: null,
|
session: null,
|
||||||
};
|
};
|
||||||
|
@ -138,25 +131,10 @@ async function request(method = 'get', url, body, requestOptions = {}, limiter)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function getTimeout(options, url) {
|
|
||||||
return new Promise((resolve, reject, onCancel) => {
|
|
||||||
const timeoutId = setTimeout(() => {
|
|
||||||
reject(new Error(`URL ${url} timed out`));
|
|
||||||
}, (options?.timeout || defaultOptions.timeout) + 10000);
|
|
||||||
|
|
||||||
onCancel(() => clearTimeout(timeoutId));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async function scheduleRequest(method = 'get', url, body, options) {
|
async function scheduleRequest(method = 'get', url, body, options) {
|
||||||
const limiter = getLimiter(options, url);
|
const limiter = getLimiter(options, url);
|
||||||
const timeout = getTimeout(options, url);
|
|
||||||
|
|
||||||
const result = await limiter.schedule(() => Promise.race([request(method, url, body, options, limiter), timeout]));
|
return limiter.schedule(() => request(method, url, body, options, limiter));
|
||||||
|
|
||||||
timeout.cancel();
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function get(url, options) {
|
async function get(url, options) {
|
||||||
|
|
|
@ -45,5 +45,4 @@ module.exports = postgraphile(
|
||||||
],
|
],
|
||||||
pgSettings,
|
pgSettings,
|
||||||
},
|
},
|
||||||
pgSettings,
|
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue