diff options
| author | Ben Burwell <bburwell1@gmail.com> | 2014-10-22 08:35:44 -0400 | 
|---|---|---|
| committer | Ben Burwell <bburwell1@gmail.com> | 2014-10-22 08:35:44 -0400 | 
| commit | 05337261ffb4abfb0fbbb9c775ccad0e28645692 (patch) | |
| tree | 973f24e72570cc4d721957e70adf51387c13598b /lib | |
| parent | c2d82325318085b89d255e84384651db680c0c97 (diff) | |
Begin rewrite for new API
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/Agency.js | 45 | ||||
| -rw-r--r-- | lib/Device.js | 12 | ||||
| -rw-r--r-- | lib/active911.js | 63 | ||||
| -rw-r--r-- | lib/util.js | 3 | 
4 files changed, 123 insertions, 0 deletions
| diff --git a/lib/Agency.js b/lib/Agency.js new file mode 100644 index 0000000..c22a141 --- /dev/null +++ b/lib/Agency.js @@ -0,0 +1,45 @@ +var _util = require('./util'); + +module.exports.Agency = function(options) { +    this._id = options.id; +    this._name = options.name; +    this._address = options.address; +    this._city = options.city; +    this._state = options.state; +    this._latitude = options.latitude; +    this._longitude = options.longitude; +    this._devices = options.devices; +    this._uri = options.uri || _util.API_BASE + '/agency/' + options.id; +}; + +module.exports.Agency.prototype.getId = function() { +    return this._id; +}; + +module.exports.Agency.prototype.getName = function() { +    return this._name; +}; + +module.exports.Agency.prototype.getAddress = function() { +    return this._address; +}; + +module.exports.Agency.prototype.getCity = function() { +    return this._city; +}; + +module.exports.Agency.prototype.getState = function() { +    return this._state; +}; + +module.exports.Agency.prototype.getLatitude = function() { +    return this._latitude; +}; + +module.exports.Agency.prototype.getLongitude = function() { +    return this._longitude; +}; + +module.exports.Agency.prototype.getDevices = function() { +    return this._devices; +}; diff --git a/lib/Device.js b/lib/Device.js new file mode 100644 index 0000000..bfc4d34 --- /dev/null +++ b/lib/Device.js @@ -0,0 +1,12 @@ +var _util = require('./util'); + +module.exports.Device = function(options) { +    this._id = options.id; +    this._name = options.name; +    this._latitude = options.latitude; +    this._longitude = options.longitude; +    this._position_accuracy = options.position_accuracy; +    this._position_timestamp = options.position_timestamp; +    this._agencies = options.agencies; +    this._uri = options.uri || _util.API_BASE + '/devices/' + options.id; +}; diff --git a/lib/active911.js b/lib/active911.js new file mode 100644 index 0000000..e75eaca --- /dev/null +++ b/lib/active911.js @@ -0,0 +1,63 @@ +var OAuth2 = require('oauth').OAuth2; +var http = require('http'); +var events = require('events'); +var querystring = require('querystring'); +var url = require('url'); +var Agency = require('./Agency.js').Agency; +var Device = require('./Device.js').Device; +var _util = require('./util'); + +module.exports.Agency = Agency; +module.exports.Device = Device; + +// Constructor +module.exports.Active911 = function(client_id, client_secret, scope) { +    this._client_id = client_id; +    this._client_secret = client_secret; +    this._scope = scope; +    this._oauth_complete = false; +    this._emitter = new events.EventEmitter(); + +    // Create the HTTP server that will receive the OAuth code after the user +    // has authenticated to Active911. +    this._http_server = new http.Server(); + +    // The request handler +    this._http_server.on('request', function(req, res) { + +        // The only thing we care about is the /?code=xxx +        var qs = url.parse(req.url).query; + +        // If a code has been sent, and we don't already have one, we are good +        // to go. +        if (qs.split('=')[0] === 'code' && !this._oauth_complete) { +            this._oauth_code = qs.split('=')[1]; +            this._oauth_complete = true; +            emitter.emit('oauth_complete'); +        } + +        res.writeHead(200, {'Content-Type': 'text/plain'}); +        res.end(); +    }); + +    // Once the server is listening, store its port number for use in auth uri +    this._http_server.listen(0, function() { +         +    }); +}; + +module.exports.Active911.prototype.getAuthorizationUri = function() { + +    var qs = querystring.stringify({ +        client_id: this._client_id, +        response_type: 'code', +        redirection_uri: 'http://localhost:' + this._oauth_server_port, +        scope: this._scope +    }); + +    return _util.API_BASE_NAME + '/open_api/authorize_agency.php' + qs; +}; + +module.exports.Active911.prototype.ready = function(func) { +    emitter.on('oauth_complete', func); +}; diff --git a/lib/util.js b/lib/util.js new file mode 100644 index 0000000..08efbfb --- /dev/null +++ b/lib/util.js @@ -0,0 +1,3 @@ +module.exports.API_BASE_NAME = 'https://access.active911.com'; +module.exports.API_BASE_PATH = '/interface/open_api/api'; +module.exports.API_BASE = exports.API_BASE_NAME + exports.API_BASE_PATH; | 
