(function(window)
{
var Gitana = window.Gitana;
Gitana.Vault = Gitana.AbstractPlatformDataStore.extend(
/** @lends Gitana.Vault.prototype */
{
/**
* @constructs
* @augments Gitana.AbstractPlatformDataStore
*
* @class Vault
*
* @param {Gitana.Platform} platform
* @param [Object] object json object (if no callback required for populating)
*/
constructor: function(platform, object)
{
this.base(platform, object);
this.objectType = function() { return "Gitana.Vault"; };
},
/**
* @OVERRIDE
*/
getType: function()
{
return Gitana.TypedIDConstants.TYPE_VAULT;
},
/**
* @OVERRIDE
*/
getUri: function()
{
return "/vaults/" + this.getId();
},
/**
* @override
*/
clone: function()
{
return this.getFactory().vault(this.getPlatform(), this);
},
//////////////////////////////////////////////////////////////////////////////////////////
//
// ARCHIVES
//
//////////////////////////////////////////////////////////////////////////////////////////
/**
* Lists the archives.
*
* @param pagination
*
* @chained archive map
*/
listArchives: function(pagination)
{
var params = {};
if (pagination)
{
Gitana.copyInto(params, pagination);
}
var chainable = this.getFactory().archiveMap(this);
return this.chainGet(chainable, this.getUri() + "/archives", params);
},
/**
* Reads an archive.
*
* @param stackId
*
* @chained stack
*/
readArchive: function(archiveId)
{
var chainable = this.getFactory().archive(this);
return this.chainGet(chainable, this.getUri() + "/archives/" + archiveId);
},
/**
* Looks up an archive by its identifier information.
*
* @param groupId
* @param artifactId
* @param versionId
*
* @chained stack
*/
lookupArchive: function(groupId, artifactId, versionId)
{
var chainable = this.getFactory().archive(this);
return this.chainGet(chainable, this.getUri() + "/archives/lookup?group=" + groupId + "&artifact=" + artifactId + "&version=" + versionId);
},
/**
* Queries for stacks.
*
* @chained stack map
*
* @param {Object} query
* @param [Object] pagination pagination (optional)
*/
queryArchives: function(query, pagination)
{
var self = this;
var params = {};
if (pagination)
{
Gitana.copyInto(params, pagination);
}
var uriFunction = function()
{
return self.getUri() + "/archives/query";
};
var chainable = this.getFactory().archiveMap(this);
return this.chainPost(chainable, uriFunction, params, query);
},
/**
* Performs a bulk check of permissions against permissioned objects of type stack.
*
* 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
*/
checkArchivePermissions: function(checks, callback)
{
var self = this;
var uriFunction = function()
{
return self.getUri() + "/archives/permissions/check";
};
var object = {
"checks": checks
};
return this.chainPostResponse(this, uriFunction, {}, object).then(function(response) {
callback.call(this, response["results"]);
});
}
});
})(window);