cobox-server
v3.0.0-alpha1
Published
server for cobox, manage your groups and talk to your cobox device
Downloads
1
Readme
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
| Verb | Path | Controller Action | Comment |
|------|--------|--------|--------|
| GET | /groups | groups.js#index | list all groups |
| POST | /groups/:id | groups.js#create | create a single group |
| POST | /groups/:id/mount | groups/mount.js#create | mount a group |
| DELETE | /groups/:id/mount | groups/mount.js#destroy | unmount a group |
| POST | /groups/:id/sync | groups/sync.js#create | sync a group |
| DELETE | /groups/:id/sync | groups/sync.js#destroy | unsync a group |
| GET | /groups/:id/files | groups/files.js#readdir | list a group's files |
| GET | /groups/:id/files/:filename | groups/files.js#readFile OR groups/files.js#createReadStream | download / get a file |
| GET | /settings | settings.js#index | list settings. Currently includes the public key needed for invite codes|
| PATCH | /settings | settings.js#update | change settings e.g. name, mountdir, etc |
| GET | /groups/:id/drive | groups/drive.js#index | get drive state / history |
| GET | /admin/devices | admin/devices.js#index | list all coboxes devices we hold an admin passphrase for (get from config.yml
) |
| GET | /devices | devices.js#index | listen for locally broadcasting devices, send the pubKey to the front-end |
| POST | /admin/devices/:id | admin/devices.js#create | using the broadcasted pubKey, send a request to save that device, store the passphrase in config.yml
, send it back in response |