Skip to content

Commit 3a2db03

Browse files
committed
Advance Nodejs
1 parent f26d5b7 commit 3a2db03

5 files changed

+121
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
const { Transform } = require('stream');
2+
3+
class ReplaceText extends Transform {
4+
5+
constructor(char) {
6+
super();
7+
this.replaceChar = char;
8+
}
9+
10+
_transform(chunk, encoding, callback) {
11+
const transformChunk = chunk.toString()
12+
.replace(/[a-z]|[A-Z]|[0-9]/g, this.replaceChar);
13+
this.push(transformChunk)
14+
callback();
15+
}
16+
17+
_flush(callback) {
18+
this.push('more stuff is being passed...');
19+
callback();
20+
}
21+
22+
}
23+
24+
var xStream = new ReplaceText('XX');
25+
26+
process.stdin
27+
.pipe(xStream)
28+
.pipe(process.stdout);
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
const { createServer } = require('http');
2+
const { stat, createReadStream } = require('fs');
3+
const { promisify } = require('util');
4+
const fileName = '../../powder-day.mp4';
5+
const fileInfo = promisify(stat);
6+
7+
createServer(async (req, res) => {
8+
const { size } = await fileInfo(fileName);
9+
res.writeHead(200, {
10+
'Content-Length': size,
11+
'Content-Type': 'video/mp4'
12+
});
13+
createReadStream(fileName).pipe(res);
14+
}).listen(3000, () => console.log('server running - 3000'));
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
const { createServer } = require('http');
2+
const { stat, createReadStream } = require('fs');
3+
const { promisify } = require('util');
4+
const fileName = '../../powder-day.mp4';
5+
const fileInfo = promisify(stat);
6+
7+
createServer(async (req, res) => {
8+
const { size } = await fileInfo(fileName);
9+
const range = req.headers.range;
10+
if (range) {
11+
let [start, end] = range.replace(/bytes=/, '').split('-');
12+
start = parseInt(start, 10);
13+
end = end ? parseInt(end, 10) : size - 1;
14+
res.writeHead(206, {
15+
'Content-Range': `bytes ${start}-${end}/${size}`,
16+
'Accept-Ranges': 'bytes',
17+
'Content-Length': (end-start) + 1,
18+
'Content-Type': 'video/mp4'
19+
})
20+
createReadStream(fileName, { start, end }).pipe(res);
21+
} else {
22+
res.writeHead(200, {
23+
'Content-Length': size,
24+
'Content-Type': 'video/mp4'
25+
});
26+
createReadStream(fileName).pipe(res);
27+
}
28+
}).listen(3000, () => console.log('server running - 3000'));
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
const { createServer } = require('http');
2+
const {
3+
stat,
4+
createReadStream,
5+
createWriteStream
6+
} = require('fs');
7+
const { promisify } = require('util');
8+
const fileName = '../../powder-day.mp4';
9+
const fileInfo = promisify(stat);
10+
11+
const respondWithVideo = async (req, res) => {
12+
const { size } = await fileInfo(fileName);
13+
const range = req.headers.range;
14+
if (range) {
15+
let [start, end] = range.replace(/bytes=/, '').split('-');
16+
start = parseInt(start, 10);
17+
end = end ? parseInt(end, 10) : size - 1;
18+
res.writeHead(206, {
19+
'Content-Range': `bytes ${start}-${end}/${size}`,
20+
'Accept-Ranges': 'bytes',
21+
'Content-Length': (end-start) + 1,
22+
'Content-Type': 'video/mp4'
23+
})
24+
createReadStream(fileName, { start, end }).pipe(res);
25+
} else {
26+
res.writeHead(200, {
27+
'Content-Length': size,
28+
'Content-Type': 'video/mp4'
29+
});
30+
createReadStream(fileName).pipe(res);
31+
}
32+
}
33+
34+
createServer((req, res) => {
35+
if (req.method === 'POST') {
36+
req.pipe(res);
37+
req.pipe(process.stdout);
38+
req.pipe(createWriteStream('./upload.file'));
39+
} else if (req.url === '/video') {
40+
respondWithVideo(req, res);
41+
} else {
42+
res.writeHead(200, { 'Content-Type': 'text/html' });
43+
res.end(`
44+
<form enctype="multipart/form-data" method="POST" action="/">
45+
<input type="file" name="upload-file" />
46+
<button>Upload File</button>
47+
</form>
48+
`);
49+
}
50+
51+
}).listen(3000, () => console.log('server running - 3000'));

Advance Nodejs/23. Multipart, From Base.js

Whitespace-only changes.

0 commit comments

Comments
 (0)