Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/webtorrent/webtorrent.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Rodríguez <diegorbaquero@gmail.com>2018-08-24 02:58:29 +0300
committerDiego Rodríguez <diegorbaquero@gmail.com>2018-08-24 02:58:29 +0300
commitd4c05a223080f2915ff6159002385b5d4f7c8e33 (patch)
tree2346426300c80da01038a1a2ead70cbf0f772665 /lib/server.js
parentf0e004b902c8c60a66b3ec45c3caddf81e18550a (diff)
Modernize lib/server.js
Diffstat (limited to 'lib/server.js')
-rw-r--r--lib/server.js75
1 files changed, 34 insertions, 41 deletions
diff --git a/lib/server.js b/lib/server.js
index 8ea9a48..60595a8 100644
--- a/lib/server.js
+++ b/lib/server.js
@@ -1,44 +1,41 @@
-module.exports = Server
-
-var arrayRemove = require('unordered-array-remove')
-var http = require('http')
-var mime = require('mime')
-var pump = require('pump')
-var rangeParser = require('range-parser')
-var url = require('url')
-
-function Server (torrent, opts) {
- var server = http.createServer()
- if (!opts) opts = {}
+const arrayRemove = require('unordered-array-remove')
+const http = require('http')
+const mime = require('mime')
+const pump = require('pump')
+const rangeParser = require('range-parser')
+const url = require('url')
+
+function Server (torrent, opts = {}) {
+ const server = http.createServer()
if (!opts.origin) opts.origin = '*' // allow all origins by default
- var sockets = []
- var pendingReady = []
- var closed = false
+ const sockets = []
+ const pendingReady = []
+ let closed = false
server.on('connection', onConnection)
server.on('request', onRequest)
- var _close = server.close
- server.close = function (cb) {
+ const _close = server.close
+ server.close = cb => {
closed = true
server.removeListener('connection', onConnection)
server.removeListener('request', onRequest)
while (pendingReady.length) {
- var onReady = pendingReady.pop()
+ const onReady = pendingReady.pop()
torrent.removeListener('ready', onReady)
}
torrent = null
_close.call(server, cb)
}
- server.destroy = function (cb) {
- sockets.forEach(function (socket) {
+ server.destroy = cb => {
+ sockets.forEach(socket => {
socket.destroy()
})
// Only call `server.close` if user has not called it already
- if (!cb) cb = function () {}
+ if (!cb) cb = () => {}
if (closed) process.nextTick(cb)
else server.close(cb)
}
@@ -68,13 +65,13 @@ function Server (torrent, opts) {
function onConnection (socket) {
socket.setTimeout(36000000)
sockets.push(socket)
- socket.once('close', function () {
+ socket.once('close', () => {
arrayRemove(sockets, sockets.indexOf(socket))
})
}
function onRequest (req, res) {
- var pathname = url.parse(req.url).pathname
+ const pathname = url.parse(req.url).pathname
if (pathname === '/favicon.ico') {
return serve404Page()
@@ -132,12 +129,12 @@ function Server (torrent, opts) {
return serveIndexPage()
}
- var index = Number(pathname.split('/')[1])
+ const index = Number(pathname.split('/')[1])
if (Number.isNaN(index) || index >= torrent.files.length) {
return serve404Page()
}
- var file = torrent.files[index]
+ const file = torrent.files[index]
serveFile(file)
}
@@ -145,14 +142,11 @@ function Server (torrent, opts) {
res.statusCode = 200
res.setHeader('Content-Type', 'text/html')
- var listHtml = torrent.files.map(function (file, i) {
- return '<li><a download="' + file.name + '" href="/' + i + '/' + file.name + '">' + file.path + '</a> ' +
- '(' + file.length + ' bytes)</li>'
- }).join('<br>')
+ const listHtml = torrent.files.map((file, i) => `<li><a download="${file.name}" href="/${i}/${file.name}">${file.path}</a> (${file.length} bytes)</li>`).join('<br>')
- var html = getPageHTML(
- torrent.name + ' - WebTorrent',
- '<h1>' + torrent.name + '</h1><ol>' + listHtml + '</ol>'
+ const html = getPageHTML(
+ `${torrent.name} - WebTorrent`,
+ `<h1>${torrent.name}</h1><ol>${listHtml}</ol>`
)
res.end(html)
}
@@ -161,7 +155,7 @@ function Server (torrent, opts) {
res.statusCode = 404
res.setHeader('Content-Type', 'text/html')
- var html = getPageHTML('404 - Not Found', '<h1>404 - Not Found</h1>')
+ const html = getPageHTML('404 - Not Found', '<h1>404 - Not Found</h1>')
res.end(html)
}
@@ -175,7 +169,7 @@ function Server (torrent, opts) {
// Set name of file (for "Save Page As..." dialog)
res.setHeader(
'Content-Disposition',
- 'inline; filename*=UTF-8\'\'' + encodeRFC5987(file.name)
+ `inline; filename*=UTF-8''${encodeRFC5987(file.name)}`
)
// Support DLNA streaming
@@ -187,7 +181,7 @@ function Server (torrent, opts) {
// `rangeParser` returns an array of ranges, or an error code (number) if
// there was an error parsing the range.
- var range = rangeParser(file.length, req.headers.range || '')
+ let range = rangeParser(file.length, req.headers.range || '')
if (Array.isArray(range)) {
res.statusCode = 206 // indicates that range-request was understood
@@ -197,7 +191,7 @@ function Server (torrent, opts) {
res.setHeader(
'Content-Range',
- 'bytes ' + range.start + '-' + range.end + '/' + file.length
+ `bytes ${range.start}-${range.end}/${file.length}`
)
res.setHeader('Content-Length', range.end - range.start + 1)
} else {
@@ -215,7 +209,7 @@ function Server (torrent, opts) {
function serveMethodNotAllowed () {
res.statusCode = 405
res.setHeader('Content-Type', 'text/html')
- var html = getPageHTML('405 - Method Not Allowed', '<h1>405 - Method Not Allowed</h1>')
+ const html = getPageHTML('405 - Method Not Allowed', '<h1>405 - Method Not Allowed</h1>')
res.end(html)
}
}
@@ -224,10 +218,7 @@ function Server (torrent, opts) {
}
function getPageHTML (title, pageHtml) {
- return '<!DOCTYPE html><html lang="en"><head>' +
- '<meta charset="utf-8">' +
- '<title>' + title + '</title>' +
- '</head><body>' + pageHtml + '</body></html>'
+ return `<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>${title}</title></head><body>${pageHtml}</body></html>`
}
// From https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
@@ -241,3 +232,5 @@ function encodeRFC5987 (str) {
// so we can allow for a little better readability over the wire: |`^
.replace(/%(?:7C|60|5E)/g, unescape)
}
+
+module.exports = Server