UNPKG

bmw-js

Version:

BMW javascript REST client for the BMW i3 hackathon.

131 lines (117 loc) 4.8 kB
!function(e){if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.SignalRBrowserWrapper=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){ // Generated by CoffeeScript 1.6.3 (function() { var SignalRNodeWrapper, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; module.exports = SignalRNodeWrapper = (function() { SignalRNodeWrapper.prototype.observer_callbacks = {}; SignalRNodeWrapper.prototype.observer_registry = function(entity) { var callback, _i, _len, _ref, _results; if (this.observer_callbacks[entity._id]) { _ref = this.observer_callbacks[entity._id]; _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { callback = _ref[_i]; _results.push(callback(entity)); } return _results; } }; function SignalRNodeWrapper(url, hubs) { this.observer_registry = __bind(this.observer_registry, this); var hub, _i, _len; this.signalr = $.hubConnection(url, { useDefaultPath: false }); this.hubs = {}; this.connectionStatus = {}; for (_i = 0, _len = hubs.length; _i < _len; _i++) { hub = hubs[_i]; this.hubs[hub] = this.signalr.createHubProxy(hub); this.reconnect(hub, function() { return console.log("Connection made to " + hub); }); } } SignalRNodeWrapper.prototype.reconnect = function(which, callback) { if (this.hubs[which].connection.state !== 1) { if ((this.connectionStatus[which] != null)) { return this.connectionStatus[which].done(callback); } else { return this.connectionStatus[which] = this.hub[which].connection.start().done(callback); } } }; SignalRNodeWrapper.prototype.getHub = function(which, callback) { if (this.hubs[which] != null) { return callback(null, this.hubs[which]); } else { this.hubs[which] = this.signalr.createHubProxy(which); return this.reconnect(which, function(error, result) { if (error != null) { callback(error, null); } this.hubs[which].on("UpdateEntity", this.observer_registry); return callback(null, this.hubs[which]); }); } }; SignalRNodeWrapper.prototype.setCallback = function(id, futureCallback) { if (this.observer_callbacks[id] == null) { this.observer_callbacks[id] = []; } this.observer_callbacks[id].push(futureCallback); }; SignalRNodeWrapper.prototype.removeCallback = function(id, pastCallback) { var callback, temp, _i, _len, _ref; if (pastCallback === null) { this.observer_callbacks[id] = []; } else { temp = []; _ref = this.observer_callbacks[id]; for (_i = 0, _len = _ref.length; _i < _len; _i++) { callback = _ref[_i]; if (callback !== pastCallback) { temp.push(callback); } } this.observer_callbacks[id] = temp; } }; SignalRNodeWrapper.prototype.subscribe = function(hubName, method, subject, object, futureCallback, callback) { this.setCallback(subject, futureCallback); return this.getHub(hubName, function(error, hub) { if (error != null) { callback(error, null); } if (hub != null) { hub.invoke(method, object); } return callback(null, true); }); }; SignalRNodeWrapper.prototype.unsubscribe = function(hubName, method, subject, object, pastCallback, callback) { this.removeCallback(subject, pastCallback); if (this.observer_callbacks[subject].length === 0) { return this.getHub(hubName, function(error, hub) { if (error != null) { callback(error, null); } if (hub != null) { hub.invoke(method, object); } return callback(null, true); }); } else { return callback(null, true); } }; return SignalRNodeWrapper; })(); }).call(this); /* //@ sourceMappingURL=SignalRBrowserWrapper.map */ },{}]},{},[1]) (1) });