-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy path3-fetch.js
More file actions
24 lines (20 loc) · 672 Bytes
/
Copy path3-fetch.js
File metadata and controls
24 lines (20 loc) · 672 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
'use strict';
const http = require('node:http');
const https = require('node:https');
const fetch = (url) => new Promise((resolve, reject) => {
const protocol = url.startsWith('https') ? https : http;
protocol.get(url, (res) => {
if (res.statusCode !== 200) {
const { statusCode, statusMessage } = res;
reject(new Error(`Status Code: ${statusCode} ${statusMessage}`));
}
res.setEncoding('utf8');
const buffer = [];
res.on('data', (chunk) => buffer.push(chunk));
res.on('end', () => resolve(buffer.join()));
});
});
// Usage
fetch('http://ietf.org/')
.then((body) => console.log(body))
.catch((err) => console.error(err));