11'use strict'
22
3+ const isStream = require ( 'isstream' )
34const Wreck = require ( 'wreck' )
4- const async = require ( 'async' )
5- const DAGNode = require ( 'ipfs-merkle-dag' ) . DAGNode
5+ const addToDagNodesTransform = require ( '../add-to-dagnode-transform' )
66
77module . exports = ( send ) => {
88 return function add ( files , opts , cb ) {
@@ -11,33 +11,16 @@ module.exports = (send) => {
1111 opts = { }
1212 }
1313
14- send = send . withTransform ( transform )
14+ var good = Buffer . isBuffer ( files ) ||
15+ isStream . isReadable ( files ) ||
16+ Array . isArray ( files )
1517
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' ) )
2220 }
2321
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 )
2923
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 )
4225 }
4326}
0 commit comments