(function(window)
{
var Gitana = window.Gitana;
Gitana.WebHost = Gitana.AbstractPlatformDataStore.extend(
/** @lends Gitana.WebHost.prototype */
{
/**
* @constructs
* @augments Gitana.AbstractPlatformObject
*
* @class WebHost
*
* @param {Gitana.Platform} platform
* @param [Object] object json object (if no callback required for populating)
*/
constructor: function(platform, object)
{
this.objectType = function() { return "Gitana.WebHost"; };
this.base(platform, object);
},
/**
* @OVERRIDE
*/
getUri: function()
{
return "/webhosts/" + this.getId();
},
/**
* @OVERRIDE
*/
getType: function()
{
return Gitana.TypedIDConstants.TYPE_WEB_HOST;
},
/**
* @override
*/
clone: function()
{
return this.getFactory().webhost(this.getPlatform(), this);
},
getUrlPatterns: function()
{
return this.get("urlPatterns");
},
//////////////////////////////////////////////////////////////////////////////////////////
//
// AUTO CLIENT MAPPINGS
//
//////////////////////////////////////////////////////////////////////////////////////////
/**
* Create auto client mapping
*
* @chained auto client mapping
*
* @param uri
* @param applicationId
* @param clientKey
* @param authGrantKey
* @param [Object] object JSON object
*/
createAutoClientMapping: function(uri, applicationId, clientKey, authGrantKey, object)
{
if (!object)
{
object = {};
}
if (!Gitana.isString(applicationId))
{
applicationId = applicationId.getId();
}
if (!Gitana.isString(clientKey))
{
clientKey = clientKey.getKey();
}
if (!Gitana.isString(authGrantKey))
{
authGrantKey = authGrantKey.getKey();
}
object["uri"] = uri;
object["applicationId"] = applicationId;
object["clientKey"] = clientKey;
object["authGrantKey"] = authGrantKey;
var uriFunction = function()
{
return "/webhosts/" + this.getId() + "/autoclientmappings";
};
var chainable = this.getFactory().autoClientMapping(this);
return this.chainCreate(chainable, object, uriFunction);
},
/**
* Lists the auto client mappings.
*
* @param pagination
*
* @chained auto client mappings map
*/
listAutoClientMappings: function(pagination)
{
var params = {};
if (pagination)
{
Gitana.copyInto(params, pagination);
}
var uriFunction = function()
{
return "/webhosts/" + this.getId() + "/autoclientmappings";
};
var chainable = this.getFactory().autoClientMappingMap(this);
return this.chainGet(chainable, uriFunction, params);
},
/**
* Reads an auto client mapping.
*
* @param autoClientMappingId
*
* @chained auto client mapping
*/
readAutoClientMapping: function(autoClientMappingId)
{
var self = this;
var uriFunction = function()
{
return self.getUri() + "/autoclientmappings/" + autoClientMappingId;
};
var chainable = this.getFactory().autoClientMapping(this);
return this.chainGet(chainable, uriFunction);
},
/**
* Queries for auto client mappings.
*
* @chained auto client mappings map
*
* @param {Object} query
* @param [Object] pagination pagination (optional)
*/
queryAutoClientMappings: function(query, pagination)
{
var self = this;
var params = {};
if (pagination)
{
Gitana.copyInto(params, pagination);
}
var uriFunction = function()
{
return self.getUri() + "/autoclientmappings/query";
};
var chainable = this.getFactory().autoClientMappingMap(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
*/
checkAutoClientMappingsPermissions: function(checks, callback)
{
var self = this;
var uriFunction = function()
{
return self.getUri() + "/autoclientmappings/permissions/check";
};
var object = {
"checks": checks
};
return this.chainPostResponse(this, uriFunction, {}, object).then(function(response) {
callback.call(this, response["results"]);
});
},
//////////////////////////////////////////////////////////////////////////////////////////
//
// TRUSTED DOMAIN MAPPINGS
//
//////////////////////////////////////////////////////////////////////////////////////////
/**
* Create trusted domain mapping
*
* @chained trusted domain mapping
*
* @param host
* @param scope
* @param platformId
* @param [Object] object JSON object
*/
createTrustedDomainMapping: function(host, scope, platformId, object)
{
if (!object)
{
object = {};
}
if (!Gitana.isString(platformId))
{
platformId = platformId.getId();
}
object["host"] = host;
object["scope"] = scope;
object["platformId"] = platformId;
var uriFunction = function()
{
return "/webhosts/" + this.getId() + "/trusteddomainmappings";
};
var chainable = this.getFactory().trustedDomainMapping(this);
return this.chainCreate(chainable, object, uriFunction);
},
/**
* Lists the trusted domain mappings.
*
* @param pagination
*
* @chained trusted domain mappings map
*/
listTrustedDomainMappings: function(pagination)
{
var params = {};
if (pagination)
{
Gitana.copyInto(params, pagination);
}
var uriFunction = function()
{
return "/webhosts/" + this.getId() + "/trusteddomainmappings";
};
var chainable = this.getFactory().trustedDomainMappingMap(this);
return this.chainGet(chainable, uriFunction, params);
},
/**
* Reads a trusted domain mapping.
*
* @param trustedDomainMappingId
*
* @chained trusted domain mapping
*/
readTrustedDomainMapping: function(trustedDomainMappingId)
{
var self = this;
var uriFunction = function()
{
return self.getUri() + "/trusteddomainmappings/" + trustedDomainMappingId;
};
var chainable = this.getFactory().trustedDomainMapping(this);
return this.chainGet(chainable, uriFunction);
},
/**
* Queries for trusted domain mappings.
*
* @chained trusted domain mappings map
*
* @param {Object} query
* @param [Object] pagination pagination (optional)
*/
queryTrustedDomainMappings: function(query, pagination)
{
var self = this;
var params = {};
if (pagination)
{
Gitana.copyInto(params, pagination);
}
var uriFunction = function()
{
return self.getUri() + "/trusteddomainmappings/query";
};
var chainable = this.getFactory().trustedDomainMappingMap(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
*/
checkTrustedDomainMappingsPermissions: function(checks, callback)
{
var self = this;
var uriFunction = function()
{
return self.getUri() + "/trusteddomainmappings/permissions/check";
};
var object = {
"checks": checks
};
return this.chainPostResponse(this, uriFunction, {}, object).then(function(response) {
callback.call(this, response["results"]);
});
},
//////////////////////////////////////////////////////////////////////////////////////////
//
// DEPLOYED APPLICATIONS
//
//////////////////////////////////////////////////////////////////////////////////////////
/**
* Lists the deployed applications.
*
* @param pagination
*
* @chained deployed application mappings map
*/
listDeployedApplications: function(pagination)
{
var params = {};
if (pagination)
{
Gitana.copyInto(params, pagination);
}
var uriFunction = function()
{
return "/webhosts/" + this.getId() + "/applications";
};
var chainable = this.getFactory().deployedApplicationMap(this);
return this.chainGet(chainable, uriFunction, params);
},
/**
* Reads a deployed application.
*
* @param deployedApplicationId
*
* @chained deployed application
*/
readDeployedApplication: function(deployedApplicationId)
{
var uriFunction = function()
{
return "/webhosts/" + this.getId() + "/applications/" + deployedApplicationId;
};
var chainable = this.getFactory().deployedApplication(this);
return this.chainGet(chainable, uriFunction);
},
/**
* Queries for deployed applications
*
* @chained deployed applications map
*
* @param {Object} query
* @param [Object] pagination pagination (optional)
*/
queryDeployedApplications: function(query, pagination)
{
var self = this;
var params = {};
if (pagination)
{
Gitana.copyInto(params, pagination);
}
var uriFunction = function()
{
return self.getUri() + "/applications/query";
};
var chainable = this.getFactory().deployedApplicationMap(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
*/
checkDeployedApplicationsPermissions: function(checks, callback)
{
var self = this;
var uriFunction = function()
{
return self.getUri() + "/applications/permissions/check";
};
var object = {
"checks": checks
};
return this.chainPostResponse(this, uriFunction, {}, object).then(function(response) {
callback.call(this, response["results"]);
});
}
});
})(window);