mirror of
https://github.com/QuiteAFancyEmerald/Holy-Unblocker.git
synced 2025-05-13 12:00:02 -04:00
Minor Edits
This commit is contained in:
parent
eeaa56dfe4
commit
27b55eb78e
12 changed files with 1102 additions and 5 deletions
142
src/alloyproxy/libs/requests.js
Normal file
142
src/alloyproxy/libs/requests.js
Normal file
|
@ -0,0 +1,142 @@
|
|||
const http = require('http'),
|
||||
https = require('https'),
|
||||
zlib = require('zlib');
|
||||
|
||||
|
||||
module.exports = (url, options) => {
|
||||
|
||||
|
||||
if (!options) options = {};
|
||||
|
||||
var request = {};
|
||||
|
||||
request.options = options;
|
||||
|
||||
var protocol;
|
||||
|
||||
if (url.startsWith('https://')) {
|
||||
protocol = https
|
||||
} else protocol = http;
|
||||
|
||||
return new Promise((resolve, error) => {
|
||||
|
||||
var req = protocol.request(url, request.options, res => {
|
||||
|
||||
var response = res;
|
||||
|
||||
response.json = new Promise(resolve => {
|
||||
|
||||
var body = '',
|
||||
json = '';
|
||||
|
||||
res.on('data', chunk => body += chunk);
|
||||
|
||||
res.on('end', () => {
|
||||
|
||||
try {
|
||||
|
||||
json = JSON.parse(body);
|
||||
|
||||
} catch (err) {
|
||||
|
||||
json = {};
|
||||
|
||||
}
|
||||
|
||||
resolve(json);
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
response.text = new Promise(resolve => {
|
||||
|
||||
var data = '',
|
||||
text = '';
|
||||
|
||||
res.on('data', chunk => data = chunk.toString());
|
||||
|
||||
res.on('end', () => {
|
||||
text = data;
|
||||
resolve(text);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
response.buffer = new Promise(resolve => {
|
||||
|
||||
var buffer = [];
|
||||
|
||||
res.on('data', binary => {
|
||||
|
||||
buffer.push(binary)
|
||||
|
||||
}).on('end', () => {
|
||||
|
||||
buffer = Buffer.concat(buffer)
|
||||
|
||||
switch (res.headers['content-encoding']) {
|
||||
|
||||
case 'gzip':
|
||||
case 'x-gzip':
|
||||
|
||||
zlib.gunzip(buffer, (err, buffer) => {
|
||||
|
||||
resolve(buffer);
|
||||
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 'deflate':
|
||||
case 'x-deflate':
|
||||
|
||||
zlib.inflate(buffer, (err, buffer) => {
|
||||
|
||||
resolve(buffer);
|
||||
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
case 'br':
|
||||
|
||||
zlib.BrotliDecompress(buffer, (err, buffer) => {
|
||||
|
||||
resolve(buffer);
|
||||
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
resolve(buffer);
|
||||
|
||||
break;
|
||||
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
resolve(response);
|
||||
|
||||
});
|
||||
|
||||
req.on('error', err => {
|
||||
|
||||
error(err);
|
||||
|
||||
});
|
||||
|
||||
if (options.body) {
|
||||
req.write(options.body);
|
||||
req.end();
|
||||
} else req.end();
|
||||
|
||||
|
||||
});
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue