Add IPFS support to Uppy, a JavaScript file uploader

Description

Uppy https://uppy.io is a JavaScript file uploader. Adding FISSION / IPFS as a custom upload destination and source.

User Impact

Who would want to use this and why?

Anyone that wants to support a high quality full featured full uploading in their app can use Uppy — including access to other systems such as Google Drive, Dropbox, etc. — but have the files then uploaded / side loaded to IPFS.

Features

Enable IPFS as a destination for uploads

there is already an AWS S3 destination that can be modified.

The other Destination plugins may be simpler to look at, such as the basic XHR Upload — as with FISSION, just need the endpoint and to set authentication headers/

Set default gateway

Will default to FISSION gateway, should be configurable

Companion Support for IPFS as a Source

Optional: add support to Companion to use IPFS as a source of files — this will require adding OAuth support to FISSION web API. This is more complex and should be left until later. Like, when we support OAuth. Although @expede has a whiteboard idea about generating OAuth tokens from private keys.

Are there plans for Fission to have an S3-compatible API like Temporal? That would allow lots of integrations like this one supposedly without any changes to each library/tool.

We talked about it as an option and it would be quite easy for us to do. But if an app already uses S3, it’s not that hard to integrate the Fission API.

But, that’s still a very centralized model, where the app stores each users files.

I don’t think this is the right model: we want to promote user-controlled data, where the user brings their files to an app, rather than the reverse.