UNPKG

3.74 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 '/publickey', @globalPublicKeyController.get
35 app.post '/authenticate', @authenticateController.create
36 app.post '/messages', @messagesController.create
37 app.get '/v2/devices/:uuid/subscriptions', @subscriptionsController.list
38 app.get '/v2/whoami', @whoamiController.show
39 app.post '/devices', @registerDeviceController.register
40 app.delete '/devices/:uuid', @unregisterDeviceController.unregister
41 app.get '/devices/:uuid', @deviceV1Controller.get
42 app.get '/devices/:uuid/publickey', @deviceV1Controller.getPublicKey
43 app.put '/devices/:uuid', @deviceV2Controller.update
44 app.get '/v2/devices/:uuid', @deviceV2Controller.get
45 app.post '/claimdevice/:uuid', @deviceV2Controller.claimdevice
46 app.patch '/v2/devices/:uuid', @deviceV2Controller.update
47 app.put '/v2/devices/:uuid', @deviceV2Controller.updateDangerously
48 app.get '/v3/devices/:uuid', @deviceV3Controller.get
49 app.get '/mydevices', @searchDeviceController.mydevices
50 app.get '/devices', @searchDeviceController.searchV1
51 app.get '/v2/devices', @searchDeviceController.searchV2
52 app.post '/search/devices', @searchDeviceController.searchV3
53 app.get '/status', @statusController.get
54 app.delete '/devices/:uuid/tokens', @tokenController.revokeByQuery
55 app.get '/subscribe*', (req, res) =>
56 proto = req.header('x-forwarded-proto') ? 'https'
57 host = 'meshblu-http-streaming.octoblu.com'
58 url = "#{proto}://#{host}#{req.url}"
59 res.redirect(301, url)
60
61module.exports = Router