Skip to content
This repository has been archived by the owner on Aug 7, 2024. It is now read-only.

Commit

Permalink
feat(pinFileToIpfs): support multiple readable streams with backwards…
Browse files Browse the repository at this point in the history
…-compatible change
  • Loading branch information
dionysuzx committed Mar 15, 2022
1 parent 3de2131 commit 41cb333
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 5 deletions.
15 changes: 10 additions & 5 deletions src/commands/pinning/pinFileToIPFS.js
Original file line number Diff line number Diff line change
Expand Up @@ -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'));
}

Expand Down
11 changes: 11 additions & 0 deletions test/commands/pinning/pinFileToIPFS.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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', () => {
Expand All @@ -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
Expand Down

0 comments on commit 41cb333

Please sign in to comment.