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:
-rw-r--r--README.md3
-rw-r--r--index.js78
-rw-r--r--package.json2
-rw-r--r--test/basic-node.js19
-rw-r--r--test/basic.js8
-rw-r--r--test/content/numbers/1.txt1
-rw-r--r--test/content/numbers/2.txt1
-rw-r--r--test/content/numbers/3.txt1
8 files changed, 45 insertions, 68 deletions
diff --git a/README.md b/README.md
index cb4c136..d0cbafa 100644
--- a/README.md
+++ b/README.md
@@ -266,10 +266,9 @@ Start seeding a new torrent.
- path to the file or folder on filesystem (string)
- W3C [File](https://developer.mozilla.org/en-US/docs/Web/API/File) object (from an `<input>` or drag and drop)
- W3C [FileList](https://developer.mozilla.org/en-US/docs/Web/API/FileList) object (basically an array of `File` objects)
-- W3C [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) object
- Node [Buffer](http://nodejs.org/api/buffer.html) object (works in [the browser](https://www.npmjs.org/package/buffer))
-Or, an **array of `File`, `Blob`, or `Buffer` objects**.
+Or, an **array of `File` or `Buffer` objects**.
If `opts` is specified, it should contain the following types of options:
diff --git a/index.js b/index.js
index 75d05cc..6e4c9b5 100644
--- a/index.js
+++ b/index.js
@@ -131,15 +131,6 @@ WebTorrent.prototype.get = function (torrentId) {
/**
* Start downloading a new torrent. Aliased as `client.download`.
- *
- * `torrentId` can be one of:
- * - magnet uri (utf8 string)
- * - torrent file (buffer)
- * - info hash (hex string or buffer)
- * - parsed torrent (from [parse-torrent](https://github.com/feross/parse-torrent))
- * - http/https url to a torrent file (string)
- * - filesystem path to a torrent file (string)
- *
* @param {string|Buffer|Object} torrentId
* @param {Object} opts torrent-specific options
* @param {function=} ontorrent called when the torrent is ready (has metadata)
@@ -189,14 +180,7 @@ WebTorrent.prototype.download = function (torrentId, opts, ontorrent) {
/**
* Start seeding a new torrent.
- *
- * `input` can be any of the following:
- * - path to the file or folder on filesystem (string)
- * - W3C File object (from an `<input>` or drag and drop)
- * - W3C FileList object (basically an array of `File` objects)
- * - Array of `File` objects
- *
- * @param {string|File|FileList|Blob|Buffer|Array.<File|Blob|Buffer>} input
+ * @param {string|File|FileList|Buffer|Array.<File|Buffer>} input
* @param {Object} opts
* @param {function} onseed
*/
@@ -209,45 +193,26 @@ WebTorrent.prototype.seed = function (input, opts, onseed) {
if (!opts) opts = {}
// TODO: support an array of paths
- // TODO: support path to folder (currently, only path to file supported)
-
- if (typeof FileList !== 'undefined' && input instanceof FileList)
- input = Array.prototype.slice.call(input)
-
- if (isBlob(input) || Buffer.isBuffer(input))
- input = [ input ]
-
- var streams
- if (Array.isArray(input) && input.length > 0) {
- streams = input.map(function (item) {
- if (isBlob(item)) return new FileReadStream(item)
- else if (Buffer.isBuffer(item)) {
- var s = new stream.PassThrough()
- s.end(item)
- return s
- } else {
- throw new Error('Array must contain only File|Blob|Buffer objects')
- }
- })
- } else if (typeof input === 'string') {
- streams = [ fs.createReadStream(input) ]
- } else {
- throw new Error('invalid input type')
- }
- createTorrent(input, opts, function (err, torrentBuf) {
+ createTorrent.parseInput(input, opts, function (err, files) {
if (err) return self.emit('error', err)
- self.add(torrentBuf, opts, function (torrent) {
- var tasks = [function (cb) {
- torrent.storage.load(streams, cb)
- }]
- if (self.dht) tasks.push(function (cb) {
- torrent.on('dhtAnnounce', cb)
- })
- parallel(tasks, function (err) {
- if (err) return self.emit('error', err)
- if (onseed) onseed(torrent)
- self.emit('seed', torrent)
+ var streams = files.map(function (file) { return file.getStream })
+
+ createTorrent(input, opts, function (err, torrentBuf) {
+ if (err) return self.emit('error', err)
+
+ self.add(torrentBuf, opts, function (torrent) {
+ var tasks = [function (cb) {
+ torrent.storage.load(streams, cb)
+ }]
+ if (self.dht) tasks.push(function (cb) {
+ torrent.on('dhtAnnounce', cb)
+ })
+ parallel(tasks, function (err) {
+ if (err) return self.emit('error', err)
+ if (onseed) onseed(torrent)
+ self.emit('seed', torrent)
+ })
})
})
})
@@ -255,7 +220,6 @@ WebTorrent.prototype.seed = function (input, opts, onseed) {
/**
* Remove a torrent from the client.
- *
* @param {string|Buffer} torrentId
* @param {function} cb
*/
@@ -270,8 +234,6 @@ WebTorrent.prototype.remove = function (torrentId, cb) {
/**
* Destroy the client, including all torrents and connections to peers.
- *
- * @override
* @param {function} cb
*/
WebTorrent.prototype.destroy = function (cb) {
@@ -292,7 +254,7 @@ WebTorrent.prototype.destroy = function (cb) {
}
/**
- * Check if `obj` is a W3C Blob object (which is the superclass of W3C File)
+ * Check if `obj` is a W3C Blob object (which is the superclass of W3C File).
* @param {*} obj
* @return {boolean}
*/
diff --git a/package.json b/package.json
index 54a9c27..8b7b25b 100644
--- a/package.json
+++ b/package.json
@@ -38,7 +38,7 @@
"block-stream": "0.0.7",
"clivas": "^0.1.4",
"concat-stream": "^1.4.6",
- "create-torrent": "^3.1.0",
+ "create-torrent": "^3.4.0",
"debug": "^2.1.0",
"dezalgo": "^1.0.1",
"end-of-stream": "^1.0.0",
diff --git a/test/basic-node.js b/test/basic-node.js
index caf69b6..6039405 100644
--- a/test/basic-node.js
+++ b/test/basic-node.js
@@ -9,6 +9,7 @@ var leavesPath = __dirname + '/torrents/leaves.torrent'
var leaves = fs.readFileSync(leavesPath)
var leavesTorrent = parseTorrent(leaves)
var leavesBookPath = __dirname + '/content/Leaves of Grass by Walt Whitman.epub'
+var numbersPath = __dirname + '/content/numbers'
test('client.add (http url to a torrent file (string))', function (t) {
t.plan(1)
@@ -50,3 +51,21 @@ test('client.seed (filesystem path to file (string))', function (t) {
client.destroy()
})
})
+
+test('client.seed (filesystem path to folder (string))', function (t) {
+ t.plan(1)
+
+ var opts = {
+ pieceLength: 32768, // force piece length to 32KB so info-hash will
+ // match what transmission generated, since we use
+ // a different algo for picking piece length
+
+ private: false // also force `private: false` to match transmission
+ }
+
+ var client = new WebTorrent({ dht: false, tracker: false })
+ client.seed(numbersPath, opts, function (torrent) {
+ t.equal(torrent.infoHash, '80562f38656b385ea78959010e51a2cc9db41ea0')
+ client.destroy()
+ })
+})
diff --git a/test/basic.js b/test/basic.js
index 912c4b0..5de4f67 100644
--- a/test/basic.js
+++ b/test/basic.js
@@ -52,13 +52,7 @@ test('client.seed (Buffer, Blob)', function (t) {
// Blob
if (typeof Blob !== 'undefined') {
var client2 = new WebTorrent({ dht: false, tracker: false })
- var blob = new Blob([ leavesBook ])
-
- // TODO: just pass name in the opts object – this should work
- // Doing it this way until we use the create-torrent code to process inputs
- // in client.seed
- blob.name = opts.name
- client2.seed(blob, function (torrent) {
+ client2.seed(new Blob([ leavesBook ]), opts, function (torrent) {
verify(t, client2, torrent)
})
} else {
diff --git a/test/content/numbers/1.txt b/test/content/numbers/1.txt
new file mode 100644
index 0000000..56a6051
--- /dev/null
+++ b/test/content/numbers/1.txt
@@ -0,0 +1 @@
+1 \ No newline at end of file
diff --git a/test/content/numbers/2.txt b/test/content/numbers/2.txt
new file mode 100644
index 0000000..8fdd954
--- /dev/null
+++ b/test/content/numbers/2.txt
@@ -0,0 +1 @@
+22 \ No newline at end of file
diff --git a/test/content/numbers/3.txt b/test/content/numbers/3.txt
new file mode 100644
index 0000000..4f37670
--- /dev/null
+++ b/test/content/numbers/3.txt
@@ -0,0 +1 @@
+333 \ No newline at end of file