1
1
'use strict'
2
2
3
+ const isStream = require ( 'isstream' )
3
4
const Wreck = require ( 'wreck' )
4
- const async = require ( 'async' )
5
- const DAGNode = require ( 'ipfs-merkle-dag' ) . DAGNode
5
+ const addToDagNodesTransform = require ( '../add-to-dagnode-transform' )
6
6
7
7
module . exports = ( send ) => {
8
8
return function add ( files , opts , cb ) {
@@ -11,33 +11,16 @@ module.exports = (send) => {
11
11
opts = { }
12
12
}
13
13
14
- send = send . withTransform ( transform )
14
+ var good = Buffer . isBuffer ( files ) ||
15
+ isStream . isReadable ( files ) ||
16
+ Array . isArray ( files )
15
17
16
- if ( typeof files === 'string' && files . startsWith ( 'http' ) ) {
17
- return Wreck . request ( 'GET' , files , null , ( err , res ) => {
18
- if ( err ) return cb ( err )
19
-
20
- send ( 'add' , null , opts , res , cb )
21
- } )
18
+ if ( ! good ) {
19
+ return cb ( new Error ( '"files" must be a buffer, readable stream, or array of objects' ) )
22
20
}
23
21
24
- return send ( 'add' , null , opts , files , cb )
25
-
26
- // transform returned objects into DAGNodes
27
- function transform ( err , res , done ) {
28
- if ( err ) return done ( err )
22
+ var sendWithTransform = send . withTransform ( addToDagNodesTransform )
29
23
30
- async . map ( res ,
31
- function map ( entry , fin ) {
32
- send ( 'object/get' , entry . Hash , null , null , function ( err , result ) {
33
- if ( err ) return done ( err )
34
- const node = new DAGNode ( result . Data , result . Links )
35
- fin ( err , node )
36
- } )
37
- } ,
38
- function complete ( err , results ) {
39
- if ( done ) return done ( err , results )
40
- } )
41
- }
24
+ return sendWithTransform ( 'add' , null , opts , files , cb )
42
25
}
43
26
}
0 commit comments