diff --git a/src/commands/pinning/pinFileToIPFS.js b/src/commands/pinning/pinFileToIPFS.js index f53c855..942b494 100644 --- a/src/commands/pinning/pinFileToIPFS.js +++ b/src/commands/pinning/pinFileToIPFS.js @@ -17,14 +17,19 @@ export default function pinFileToIPFS(pinataApiKey, pinataSecretApiKey, readStre validateApiKeys(pinataApiKey, pinataSecretApiKey); return new Promise((resolve, reject) => { - const data = new NodeFormData(); - - data.append('file', readStream); - const endpoint = `${baseUrl}/pinning/pinFileToIPFS`; - if (!(readStream instanceof stream.Readable)) { + if (readStream instanceof Array) { + readStream.forEach(rs => { + if (!(rs instanceof stream.Readable)) { + reject(new Error('readStream is not a readable stream')); + } + data.append('file', rs); + }) + } else if (readStream instanceof stream.Readable) { + data.append('file', readStream); + } else { reject(new Error('readStream is not a readable stream')); } diff --git a/test/commands/pinning/pinFileToIPFS.test.js b/test/commands/pinning/pinFileToIPFS.test.js index 891779d..561b321 100644 --- a/test/commands/pinning/pinFileToIPFS.test.js +++ b/test/commands/pinning/pinFileToIPFS.test.js @@ -6,6 +6,7 @@ jest.mock('axios'); //common values const nonStream = 'test'; const validStream = fs.createReadStream('./pinata.png'); +const validStream2 = fs.createReadStream('./README.md'); test('non-readableStream is passed in', () => { @@ -24,6 +25,16 @@ test('200 status is returned', () => { expect(pinFileToIPFS('test', 'test', validStream)).resolves.toEqual(goodStatus.data); }); +test('200 status is returned for list of streams', () => { + const goodStatus = { + status: 200, + data: 'testData' + }; + axios.post.mockResolvedValue(goodStatus); + expect.assertions(1); + expect(pinFileToIPFS('test', 'test', [validStream, validStream2])).resolves.toEqual(goodStatus.data); +}); + test('Result other than 200 status is returned', () => { const badStatus = { status: 700