1 | # Unifile, unified access to cloud storage services.
|
2 |
|
3 | Nodejs library to access cloud storage services with a common API.
|
4 |
|
5 | [![NPM](https://nodei.co/npm/unifile.png)](https://npmjs.org/package/unifile)
|
6 |
|
7 | Currently supported services
|
8 |
|
9 | * FTP
|
10 | * SFTP
|
11 | * Dropbox
|
12 | * GitHub: use git as a cloud with repository and branches as folder
|
13 | * [RemoteStorage](https://remotestorage.io/)
|
14 | * WebDAV
|
15 | * Local filesystem (might be useful to copy from your drive to your cloud)
|
16 |
|
17 | # Motivation
|
18 |
|
19 | With the rise of cloud services and the need to be independant of such or such provider, we decided to create a common tool to access a lot of online plateform.
|
20 |
|
21 | This aim to give the user of your app the liberty of choosing where they want to store their data.
|
22 |
|
23 |
|
24 | # Use
|
25 |
|
26 | Requirements
|
27 |
|
28 | * [Node.js](http://nodejs.org/) > 6.0.0
|
29 |
|
30 | # Use in your Node.js project
|
31 |
|
32 | Add unifile lib to your project
|
33 |
|
34 | ```
|
35 | $ npm install unifile --save
|
36 | ```
|
37 |
|
38 | ## Vanilla Node.js
|
39 |
|
40 | Unifile use an API similar to the native `fs` module but with Bluebird Promises instead of callbacks.
|
41 |
|
42 | You can find the whole API documentation on the [project page](https://silexlabs.github.io/unifile/).
|
43 |
|
44 | ## With Express
|
45 |
|
46 | Then write a small Node.js server [like this one](./samples/simple-api-server.js). Or play with the sample:
|
47 |
|
48 | ```
|
49 | $ cd samples
|
50 | $ npm install
|
51 | $ node simple-api-server.js
|
52 | ```
|
53 |
|
54 | Then open `http://localhost:6805/` and play with your cloud storages.
|
55 |
|
56 | ## CloudExplorer
|
57 |
|
58 | You could also take a look at the UI called [CloudExplorer](https://github.com/lexoyo/CloudExplorer2): here's a [live demo](https://cloud-explorer2.herokuapp.com/).
|
59 |
|
60 | # Privacy
|
61 |
|
62 | Most of the service in Unifile uses [OAuth 2](http://wiki.oauth.net/w/page/25236487/OAuth%202) to connect the user into the service. This means Unifile doesn't have the user credential at any time.
|
63 |
|
64 | For the server that doesn't support OAuth, like FTP, the credentials are never stored.
|
65 |
|
66 | In all case, Unifile never uses any data of the user.
|
67 |
|
68 | # License
|
69 |
|
70 | [license: MIT](./LICENSE)
|
71 |
|
72 | # Developer guide
|
73 |
|
74 | ## Add a service
|
75 |
|
76 | Unifile works with plugins to connect with more and more services. To find all the plugins available, you can follow the [unifile tag](https://github.com/topics/unifile) on GitHub. Or you can browse this non-exhaustive list:
|
77 | * [Unifile WebDAV](https://github.com/silexlabs/unifile-webdav)
|
78 |
|
79 |
|
80 | Unifile is built on modularity, meaning you can create a connector to a service a plug it in Unifile withouth modifying Unifile. So feel free to add any services you need! Don't forget to let us know about it so we could tell everyone :wink:
|
81 |
|
82 | Here is a list of services which could be useful
|
83 |
|
84 | * Google Drive
|
85 | * Amazon S3
|
86 | * CozyCloud, BTSync
|
87 | * SkyDrive, RapidShare, CloudMine, FilesAnywhere
|
88 | * SugarSync
|
89 | * Facebook (if possibe?)
|
90 | * a random list of other cloud storage services: Amazon Cloud Drive, Bitcasa, Box, DollyDrive, iCloud Drive, Microsoft OneDrive, SpiderOak, SugarSync, Wuala
|
91 |
|
92 | ## Roadmap
|
93 |
|
94 | **Let's discuss [this list of issues which set the future of unifile](https://github.com/silexlabs/unifile/labels/enhancement)**
|
95 |
|