UNPKG

4.08 kBtext/coffeescriptView Raw
1AuthenticateController = require './controllers/authenticate-controller'
2DeviceV1Controller = require './controllers/device-v1-controller'
3DeviceV2Controller = require './controllers/device-v2-controller'
4DeviceV3Controller = require './controllers/device-v3-controller'
5GlobalPublicKeyController = require './controllers/global-public-key-controller'
6MessagesController = require './controllers/messages-controller'
7RegisterDeviceController = require './controllers/register-device-controller'
8SearchDeviceController = require './controllers/search-device-controller'
9StatusController = require './controllers/status-controller'
10SubscriptionsController = require './controllers/subscriptions-controller'
11TokenController = require './controllers/token-controller'
12UnregisterDeviceController = require './controllers/unregister-device-controller'
13WhoamiController = require './controllers/whoami-controller'
14request = require 'request'
15url = require 'url'
16
17class Router
18 constructor: ({jobManager, jobToHttp})->
19 @authenticateController = new AuthenticateController {jobManager, jobToHttp}
20 @deviceV1Controller = new DeviceV1Controller {jobManager, jobToHttp}
21 @deviceV2Controller = new DeviceV2Controller {jobManager, jobToHttp}
22 @deviceV3Controller = new DeviceV3Controller {jobManager, jobToHttp}
23 @globalPublicKeyController = new GlobalPublicKeyController {jobManager, jobToHttp}
24 @messagesController = new MessagesController {jobManager, jobToHttp}
25 @registerDeviceController = new RegisterDeviceController {jobManager}
26 @searchDeviceController = new SearchDeviceController {jobManager, jobToHttp}
27 @statusController = new StatusController {jobManager}
28 @subscriptionsController = new SubscriptionsController {jobManager, jobToHttp}
29 @tokenController = new TokenController {jobManager, jobToHttp}
30 @unregisterDeviceController = new UnregisterDeviceController {jobManager, jobToHttp}
31 @whoamiController = new WhoamiController {jobManager, jobToHttp}
32
33 route: (app) =>
34 app.get '/authenticate/:uuid', @authenticateController.checkDevice
35 app.post '/authenticate', @authenticateController.check
36 app.post '/claimdevice/:uuid', @deviceV2Controller.claimdevice
37 app.get '/devices', @searchDeviceController.searchV1
38 app.post '/devices', @registerDeviceController.register
39 app.put '/devices/:uuid', @deviceV2Controller.update
40 app.get '/devices/:uuid', @deviceV1Controller.get
41 app.delete '/devices/:uuid', @unregisterDeviceController.unregister
42 app.delete '/devices/:uuid/tokens', @tokenController.revokeByQuery
43 app.get '/devices/:uuid/publickey', @deviceV1Controller.getPublicKey
44 app.post '/messages', @messagesController.create
45 app.get '/mydevices', @searchDeviceController.mydevices
46 app.get '/publickey', @globalPublicKeyController.get
47 app.post '/search/devices', @searchDeviceController.searchV3
48 app.get '/status', @statusController.get
49 app.get '/subscribe*', (req, res) =>
50 proto = req.header('x-forwarded-proto') ? 'https'
51 host = 'meshblu-http-streaming.octoblu.com'
52 url = "#{proto}://#{host}#{req.url}"
53 res.redirect(301, url)
54 app.get '/v2/devices', @searchDeviceController.searchV2
55 app.get '/v2/devices/:uuid', @deviceV2Controller.get
56 app.patch '/v2/devices/:uuid', @deviceV2Controller.update
57 app.put '/v2/devices/:uuid', @deviceV2Controller.updateDangerously
58 app.get '/v2/devices/:uuid/subscriptions', @subscriptionsController.list
59 app.post '/v2/devices/:subscriberUuid/subscriptions/:emitterUuid/:type', @subscriptionsController.create
60 app.delete '/v2/devices/:subscriberUuid/subscriptions/:emitterUuid/:type', @subscriptionsController.remove
61 app.get '/v3/devices/:uuid', @deviceV3Controller.get
62 app.get '/v2/whoami', @whoamiController.show
63
64module.exports = Router