3.0.0-alpha1 • Published 4 years ago

cobox-server v3.0.0-alpha1

Weekly downloads
1
License
AGPL-3.0-only
Repository
-
Last release
4 years ago

cobox-server

A REST API for interacting with your cobox groups and replicator devices.

Check out our command line interface which will run this server for you. Check out cobox-cli.

Install

# if you just want the server code
git clone http://ledger-git.dyne.org:3000/CoBox/cobox-server

# if you want the cli too...
git clone --recursive http://ledger-git.dyne.org:3000/CoBox/cobox-server

npm start

Development

npm run dev:server

# to pass arguments, such as port (note the extra double dash)...
npm run dev:server -- --port 1234

Swagger docs are available at http://localhost:3000/api-docs.

Running cobox

:warning: this code is in flux so please note there is active development and things may change. That being said playing with shiny things is fun.

First you need to start the cobox server

npm start

This will launch a process which you can see by navigating in a browser to

http://localhost:3000/api

If you already have something running on port 3000 then you can run

npm start -- --port 1234

Great, you have a server running. In another terminal you can run (you can use any name you like)

npm cli groups create --name my-new-group

If you have been given an address and an encryption key for a group you want to join, you can create the group by adding the flags --address / -A, or --encryption-key or -k

npm cli groups create -n my-new-group -A b74717c149390c3e8e939f6e94169751d9ade8e2e21e0255ee593fdccb504603 -k 0e90565c93f742019f0956ce7da1c952df343dde4a2c48254fbbb9cbcd7d22be

You would then be able to see this new group by navigating to

http://localhost:3000/api/groups

You can see the list of other commands implemented here

cobox help

RESTful approach to our API

:warning: this is not yet stable

VerbPathController ActionComment
GET/groupsgroups.js#indexlist all groups
POST/groups/:idgroups.js#createcreate a single group
POST/groups/:id/mountgroups/mount.js#createmount a group
DELETE/groups/:id/mountgroups/mount.js#destroyunmount a group
POST/groups/:id/syncgroups/sync.js#createsync a group
DELETE/groups/:id/syncgroups/sync.js#destroyunsync a group
GET/groups/:id/filesgroups/files.js#readdirlist a group's files
GET/groups/:id/files/:filenamegroups/files.js#readFile OR groups/files.js#createReadStreamdownload / get a file
GET/settingssettings.js#indexlist settings. Currently includes the public key needed for invite codes
PATCH/settingssettings.js#updatechange settings e.g. name, mountdir, etc
GET/groups/:id/drivegroups/drive.js#indexget drive state / history
GET/admin/devicesadmin/devices.js#indexlist all coboxes devices we hold an admin passphrase for (get from config.yml)
GET/devicesdevices.js#indexlisten for locally broadcasting devices, send the pubKey to the front-end
POST/admin/devices/:idadmin/devices.js#createusing the broadcasted pubKey, send a request to save that device, store the passphrase in config.yml, send it back in response