(function(window) { var Gitana = window.Gitana; Gitana.Directory = Gitana.AbstractPlatformDataStore.extend( /** @lends Gitana.Directory.prototype */ { /** * @constructs * @augments Gitana.AbstractPlatformDataStore * * @class Directory * * @param {Gitana.Platform} platform * @param [Object] object json object (if no callback required for populating) */ constructor: function(platform, object) { this.objectType = function() { return "Gitana.Directory"; }; this.base(platform, object); }, /** * @OVERRIDE */ getUri: function() { return "/directories/" + this.getId(); }, /** * @OVERRIDE */ getType: function() { return Gitana.TypedIDConstants.TYPE_DIRECTORY; }, /** * @override */ clone: function() { return this.getFactory().directory(this.getPlatform(), this); }, ///////////////////////////////////////////////////////////////////////////////////////////////// // // IDENTITIES // ///////////////////////////////////////////////////////////////////////////////////////////////// /** * Reads an identity. * * @chained identity * * @param {String} identityId the identity id */ readIdentity: function(identityId) { var self = this; var uriFunction = function() { return self.getUri() + "/identities/" + identityId; }; var chainable = this.getFactory().identity(this); return this.chainGet(chainable, uriFunction); }, /** * Acquires a list of all identities. * * @chained identity map * * @param [Pagination] pagination pagination (optional) */ listIdentities: function(pagination) { var self = this; // prepare params (with pagination) var params = {}; if (pagination) { Gitana.copyInto(params, pagination); } var uriFunction = function() { return self.getUri() + "/identities"; }; // get to work var chainable = this.getFactory().identityMap(this); // all groups return this.chainGet(chainable, uriFunction, params); }, /** * Queries for identities. * * @chained identity map * * @param {Object} query * @param [Object] pagination pagination (optional) */ queryIdentities: function(query, pagination) { var self = this; var params = {}; if (pagination) { Gitana.copyInto(params, pagination); } var uriFunction = function() { return self.getUri() + "/identities/query"; }; var chainable = this.getFactory().identityMap(this); return this.chainPost(chainable, uriFunction, params, query); }, /** * Performs a bulk check of permissions against permissioned objects of type identity. * * Example of checks array: * * [{ * "permissionedId": "<permissionedId>", * "principalId": "<principalId>", * "permissionId": "<permissionId>" * }] * * The callback receives an array of results, example: * * [{ * "permissionedId": "<permissionedId>", * "principalId": "<principalId>", * "permissionId": "<permissionId>", * "result": true * }] * * The order of elements in the array will be the same for checks and results. * * @param checks * @param callback */ checkIdentityPermissions: function(checks, callback) { var self = this; var object = { "checks": checks }; var uriFunction = function() { return self.getUri() + "/identities/permissions/check"; }; return this.chainPostResponse(this, uriFunction, {}, object).then(function(response) { callback.call(this, response["results"]); }); }, /** * Performs a bulk check of authorities against permissioned objects of type identity. * * Example of checks array: * * [{ * "permissionedId": "<permissionedId>", * "principalId": "<principalId>", * "authorityId": "<authorityId>" * }] * * The callback receives an array of results, example: * * [{ * "permissionedId": "<permissionedId>", * "principalId": "<principalId>", * "authorityId": "<authorityId>", * "result": true * }] * * The order of elements in the array will be the same for checks and results. * * @param checks * @param callback */ checkIdentityAuthorities: function(checks, callback) { var self = this; var object = { "checks": checks }; var uriFunction = function() { return self.getUri() + "/identities/authorities/check"; }; return this.chainPostResponse(this, uriFunction, {}, object).then(function(response) { callback.call(this, response["results"]); }); }, ///////////////////////////////////////////////////////////////////////////////////////////////// // // CONNECTIONS // ///////////////////////////////////////////////////////////////////////////////////////////////// /** * Reads a connection. * * @chained connection * * @param {String} connectionId the connection id */ readConnection: function(connectionId) { var self = this; var uriFunction = function() { return self.getUri() + "/connections/" + connectionId; }; var chainable = this.getFactory().connection(this); return this.chainGet(chainable, uriFunction); }, /** * Creates a connection. * * @chained connection * * @param [Object] object JSON object */ createConnection: function(object) { var self = this; if (!object) { object = {}; } var uriFunction = function() { return self.getUri() + "/connections"; }; var chainable = this.getFactory().connection(this, object); return this.chainCreate(chainable, object, uriFunction); }, /** * Acquires a list of all connections. * * @chained identity map * * @param [Pagination] pagination pagination (optional) */ listConnections: function(pagination) { var self = this; // prepare params (with pagination) var params = {}; if (pagination) { Gitana.copyInto(params, pagination); } var uriFunction = function() { return self.getUri() + "/connections"; }; // get to work var chainable = this.getFactory().connectionMap(this); // all groups return this.chainGet(chainable, uriFunction, params); }, /** * Queries for connections. * * @chained identity map * * @param {Object} query * @param [Object] pagination pagination (optional) */ queryConnections: function(query, pagination) { var self = this; var params = {}; if (pagination) { Gitana.copyInto(params, pagination); } var uriFunction = function() { return self.getUri() + "/connections/query"; }; var chainable = this.getFactory().connectionMap(this); return this.chainPost(chainable, uriFunction, params, query); }, /** * Performs a bulk check of permissions against permissioned objects of type connection. * * Example of checks array: * * [{ * "permissionedId": "<permissionedId>", * "principalId": "<principalId>", * "permissionId": "<permissionId>" * }] * * The callback receives an array of results, example: * * [{ * "permissionedId": "<permissionedId>", * "principalId": "<principalId>", * "permissionId": "<permissionId>", * "result": true * }] * * The order of elements in the array will be the same for checks and results. * * @param checks * @param callback */ checkConnectionPermissions: function(checks, callback) { var self = this; var object = { "checks": checks }; var uriFunction = function() { return self.getUri() + "/connections/permissions/check"; }; return this.chainPostResponse(this, uriFunction, {}, object).then(function(response) { callback.call(this, response["results"]); }); }, /** * Performs a bulk check of authorities against permissioned objects of type connection. * * Example of checks array: * * [{ * "permissionedId": "<permissionedId>", * "principalId": "<principalId>", * "authorityId": "<authorityId>" * }] * * The callback receives an array of results, example: * * [{ * "permissionedId": "<permissionedId>", * "principalId": "<principalId>", * "authorityId": "<authorityId>", * "result": true * }] * * The order of elements in the array will be the same for checks and results. * * @param checks * @param callback */ checkConnectionAuthorities: function(checks, callback) { var self = this; var object = { "checks": checks }; var uriFunction = function() { return self.getUri() + "/connections/authorities/check"; }; return this.chainPostResponse(this, uriFunction, {}, object).then(function(response) { callback.call(this, response["results"]); }); } }); })(window);