feat: add fetch module to support getting web content
This commit is contained in:
29
src/fetch.ts
Normal file
29
src/fetch.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import * as http from 'http';
|
||||
import * as https from 'https';
|
||||
|
||||
function fetch(url: string): Promise<string> {
|
||||
// determine the library to use (based on the url protocol)
|
||||
const lib = url.startsWith('https://') ? https : http;
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
lib.get(url, (response) => {
|
||||
// make sure the status code is 200
|
||||
if (response.statusCode !== 200) {
|
||||
reject(new Error(`Failed to load page, status code: ${response.statusCode}`));
|
||||
return;
|
||||
}
|
||||
|
||||
let data = '';
|
||||
response.on('data', (chunk) => {
|
||||
data += chunk;
|
||||
});
|
||||
response.on('end', () => {
|
||||
resolve(data);
|
||||
});
|
||||
}).on('error', (err) => {
|
||||
reject(err);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export default fetch;
|
Reference in New Issue
Block a user