diff --git a/index.js b/index.js index 739fa4f5..6d67b190 100644 --- a/index.js +++ b/index.js @@ -12,7 +12,7 @@ var datasourceJuggler = require('loopback-datasource-juggler'); loopback.Connector = require('./lib/connectors/base-connector'); loopback.Memory = require('./lib/connectors/memory'); loopback.Mail = require('./lib/connectors/mail'); -loopback.Remote = require('./lib/connectors/remote'); +loopback.Remote = require('loopback-connector-remote'); /** * Types diff --git a/lib/connectors/remote.js b/lib/connectors/remote.js deleted file mode 100644 index 26beb4a5..00000000 --- a/lib/connectors/remote.js +++ /dev/null @@ -1,90 +0,0 @@ -/** - * Dependencies. - */ - -var assert = require('assert'); -var remoting = require('strong-remoting'); -var DataAccessObject = require('loopback-datasource-juggler/lib/dao'); - -/** - * Export the RemoteConnector class. - */ - -module.exports = RemoteConnector; - -/** - * Create an instance of the connector with the given `settings`. - */ - -function RemoteConnector(settings) { - assert(typeof settings === 'object', 'cannot initiaze RemoteConnector without a settings object'); - this.client = settings.client; - this.adapter = settings.adapter || 'rest'; - this.protocol = settings.protocol || 'http' - this.root = settings.root || ''; - this.host = settings.host || 'localhost'; - this.port = settings.port || 3000; - this.remotes = remoting.create(); - - // TODO(ritch) make sure this name works with Model.getSourceId() - this.name = 'remote-connector'; - - if(settings.url) { - this.url = settings.url; - } else { - this.url = this.protocol + '://' + this.host + ':' + this.port + this.root; - } - - // handle mixins in the define() method - var DAO = this.DataAccessObject = function() {}; -} - -RemoteConnector.prototype.connect = function() { - this.remotes.connect(this.url, this.adapter); -} - -RemoteConnector.initialize = function(dataSource, callback) { - var connector = dataSource.connector = new RemoteConnector(dataSource.settings); - connector.connect(); - callback(); -} - -RemoteConnector.prototype.define = function(definition) { - var Model = definition.model; - var remotes = this.remotes; - var SharedClass; - - assert(Model.sharedClass, 'cannot attach ' + Model.modelName - + ' to a remote connector without a Model.sharedClass'); - - remotes.addClass(Model.sharedClass); - - Model - .sharedClass - .methods() - .forEach(function(remoteMethod) { - // TODO(ritch) more elegant way of ignoring a nested shared class - if(remoteMethod.name !== 'Change' - && remoteMethod.name !== 'Checkpoint') { - createProxyMethod(Model, remotes, remoteMethod); - } - }); -} - -function createProxyMethod(Model, remotes, remoteMethod) { - var scope = remoteMethod.isStatic ? Model : Model.prototype; - var original = scope[remoteMethod.name]; - - scope[remoteMethod.name] = function remoteMethodProxy() { - var args = Array.prototype.slice.call(arguments); - var lastArgIsFunc = typeof args[args.length - 1] === 'function'; - var callback; - if(lastArgIsFunc) { - callback = args.pop(); - } - - remotes.invoke(remoteMethod.stringName, args, callback); - } -} - -function noop() {} diff --git a/package.json b/package.json index 6fc257f4..a5f9f403 100644 --- a/package.json +++ b/package.json @@ -33,16 +33,17 @@ }, "dependencies": { "async": "~0.9.0", + "bcryptjs": "~2.0.2", "body-parser": "~1.8.1", "canonical-json": "0.0.4", + "debug": "~2.0.0", "ejs": "~1.0.0", "express": "4.x", - "strong-remoting": "^2.4.0", - "bcryptjs": "~2.0.2", - "debug": "~2.0.0", "inflection": "~1.4.2", + "loopback-connector-remote": "^1.0.1", "nodemailer": "~1.3.0", "nodemailer-stub-transport": "~0.1.4", + "strong-remoting": "^2.4.0", "uid2": "0.0.3", "underscore": "~1.7.0", "underscore.string": "~2.3.3"