Skip to content
This repository was archived by the owner on Dec 12, 2018. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions lib/ds/DataStore.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ var _ = require('underscore');
var ApiKey = require('../resource/ApiKey');
var ApiKeyEncryptedOptions = require('../authc/ApiKeyEncryptedOptions');
var CacheHandler = require('../cache/CacheHandler');
var Resource = require('../resource/Resource');
var InstanceResource = require('../resource/InstanceResource');
var NonceStore = require('./NonceStore');
var RequestExecutor = require('./RequestExecutor');
Expand Down Expand Up @@ -105,7 +106,7 @@ DataStore.prototype._wrapGetResourceResponse =
* @param {Object} query [optional=undefined]
* Key/value pairs to use as query parameters to `href`.
*
* @param {Function} instanceCtor [optional=InstanceResource]
* @param {Function} instanceCtor [optional=Resource]
* The Constructor function to invoke for any Instance Resource returned by the server.
* If the resource returned by the server is a single resource, this function is used to
* construct the resource. If the resource returned by the server is a collection,
Expand Down Expand Up @@ -342,7 +343,7 @@ DataStore.prototype.exec = function executeRequest(callback){
* @param {Object} data
* The resource (name/value pairs) to send to the server.
*
* @param {Function} instanceCtor [optional=InstanceResource]
* @param {Function} instanceCtor [optional=Resource]
* The Constructor function to invoke for any Instance Resource returned by the server.
* If the resource returned by the server is a single resource, this function is used to
* construct the resource. If the resource returned by the server is a collection,
Expand All @@ -365,8 +366,8 @@ DataStore.prototype.createResource = function createResource(/* parentHref, [que
var query = (args.length > 0) ? args.pop() : null;
callback = callback || noop;

if (!utils.isAssignableFrom(InstanceResource, ctor)) {
throw new Error("If specifying a constructor function, it must be for class equal to or a subclass of InstanceResource.");
if (!utils.isAssignableFrom(Resource, ctor)) {
throw new Error("If specifying a constructor function, it must be for class equal to or a subclass of Resource.");
}

var request = { uri: parentHref, method: 'POST' };
Expand Down
32 changes: 20 additions & 12 deletions lib/resource/AccessToken.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
'use strict';

var utils = require('../utils');
var DeletableMixin = require('./mixins/DeletableMixin');

/**
* @class AccessToken
*
* @augments Resource
* @mixes DeletableMixin
*
* @description
*
* Encapsulates a Stormpath OAuth Access Token Resource. For full
Expand Down Expand Up @@ -33,18 +37,22 @@ function AccessToken() {
AccessToken.super_.apply(this, arguments);
}

// TODO: implement getAccount(), getRefreshToken()

utils.inherits(AccessToken, require('./InstanceResource'));
// TODO: implement getRefreshToken()

module.exports = AccessToken;
utils.inherits(AccessToken, require('./Resource'));
utils.applyMixin(AccessToken, DeletableMixin);

/**
* Deletes this resource from the API.
*
* @method AccessToken.delete
*
* @param {Function} callback
* The function to call when the delete operation is complete. Will be called
* with the parameter (err).
*/
* Gets and returns the account associated with this access token.
*
* @param {ExpansionOptions=} opts Options for expanding the fetched Account
*
* @param {Function} callback The function to call after the operation is finished.
* It is called with (err, {@link Account}).
*/
AccessToken.prototype.getAccount = function getAccount(/* [opts,] callback */) {
var args = utils.resolveArgs(arguments, ['options', 'callback'], true);
return this.dataStore.getResource(this.account.href, args.options, require('./Account'), args.callback);
};

module.exports = AccessToken;
1 change: 1 addition & 0 deletions lib/resource/Account.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ var utils = require('../utils');
* - {@link Organization#getAccounts Organization.getAccounts()}
* - {@link Phone#getAccount Phone.getAccount()}
* - {@link Factor#getAccount Factor.getAccount()}
* - {@link AccessToken#getAccount AccessToken.getAccount()}
*
* @augments {DirectoryChildResource}
*
Expand Down
24 changes: 8 additions & 16 deletions lib/resource/AccountCreationPolicy.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
var InstanceResource = require('./InstanceResource');
var Resource = require('./Resource');
var SaveableMixin = require('./mixins/SaveableMixin');
var utils = require('../utils');

/**
* @class AccountCreationPolicy
*
* @augments Resource
* @mixes SaveableMixin
*
* @description
* Encapsulates the account creation policy of a {@link Directory}. For full documentation of the this resource, please see
* [REST API Reference: Account Creation Policy](https://docs.stormpath.com/rest/product-guide/latest/reference.html#account-creation-policy).
Expand All @@ -19,23 +23,11 @@ var utils = require('../utils');
* The JSON representation of this resource, retrieved the Stormpath REST API.
*/

/**
* @method AccountCreationPolicy.save
*
* @description
*
* Save changes to this resource.
*
* @param {Function} callback
* The function to call when the save operation is complete. Will be called
* with the parameters (err, updatedResource).
*/


function AccountCreationPolicy() {
AccountCreationPolicy.super_.apply(this, arguments);
}

utils.inherits(AccountCreationPolicy, InstanceResource);
utils.inherits(AccountCreationPolicy, Resource);
utils.applyMixin(AccountCreationPolicy, SaveableMixin);

module.exports = AccountCreationPolicy;
module.exports = AccountCreationPolicy;
2 changes: 2 additions & 0 deletions lib/resource/AccountStoreMapping.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ var InstanceResource = require('./InstanceResource');
/**
* @class AccountStoreMapping
*
* @augments InstanceResource
*
* @description
*
* Encapsulates an Account Store Mapping Resource, and is a base class for
Expand Down
4 changes: 2 additions & 2 deletions lib/resource/AuthenticationResult.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

var nJwt = require('njwt');

var InstanceResource = require('./InstanceResource');
var Resource = require('./Resource');
var utils = require('../utils');

/**
Expand All @@ -27,7 +27,7 @@ function AuthenticationResult() {
Object.defineProperty(this, 'ttl', { enumerable:false, writable:true, value: 3600 });
}

utils.inherits(AuthenticationResult, InstanceResource);
utils.inherits(AuthenticationResult, Resource);

/**
* Retrieves the account resource of the user that has been authenticated.
Expand Down
8 changes: 5 additions & 3 deletions lib/resource/Challenge.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
'use strict';

var InstanceResource = require('./InstanceResource');
var Resource = require('./Resource');
var SaveableMixin = require('./mixins/SaveableMixin');
var FactorCtor = require('./FactorInstantiator').Constructor;
var utils = require('../utils');

Expand All @@ -20,7 +21,7 @@ var utils = require('../utils');
* - {@link SmsFactor#createChallenge SmsFactor.createChallenge()}
* - {@link GoogleAuthenticatorFactor#createChallenge GoogleAuthenticatorFactor.createChallenge()}
*
* @augments {InstanceResource}
* @augments {Resource}
*
* @param {Object} challengeResource
*
Expand All @@ -30,7 +31,8 @@ function Challenge() {
Challenge.super_.apply(this, arguments);
}

utils.inherits(Challenge, InstanceResource);
utils.inherits(Challenge, Resource);
utils.applyMixin(Challenge, SaveableMixin);

/**
* Retrieves the factor instance ({@link SmsFactor} or {@link GoogleAuthenticatorFactor})
Expand Down
2 changes: 2 additions & 0 deletions lib/resource/CustomData.js
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,8 @@ CustomData.prototype.remove = function removeCustomDataField(fieldName){
/**
* Save changes to this custom data resource.
*
* @override
*
* @param {Function} callback
* The function to call when the save operation is complete. Will be called
* with the parameters (err, updatedCustomDataResource).
Expand Down
8 changes: 4 additions & 4 deletions lib/resource/FactorInstantiator.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ var utils = require('../utils');
var Factor = require('./Factor');
var SmsFactor = require('./SmsFactor');
var GoogleAuthenticatorFactor = require('./GoogleAuthenticatorFactor');
var InstanceResource = require('./InstanceResource');
var Resource = require('./Resource');

/**
* Retrieves the constructor for a correct {@link Factor} instance ({@link SmsFactor} or
Expand Down Expand Up @@ -45,10 +45,10 @@ function getFactorConstructor(/* factor */) {
* The constructor for {@link Factor} instances ({@link SmsFactor} or
* {@link GoogleAuthenticatorFactor}). It parses the data to construct the
* correct constructor, and calls it with the data. It is used for polymorphic
* factor instantiation. It augments {@link InstanceResource} to adhere to the
* factor instantiation. It augments {@link Resource} to adhere to the
* interface used for instantiation in {@link ResourceFactory}.
*
* @augments InstanceResource
* @augments Resource
*/
function FactorInstantiator() {
var Ctor = getFactorConstructor.apply(this, arguments);
Expand All @@ -62,7 +62,7 @@ function FactorInstantiator() {
return new (Ctor.bind.apply(Ctor, argsWithContext))();
}

utils.inherits(FactorInstantiator, InstanceResource);
utils.inherits(FactorInstantiator, Resource);

module.exports = {
Constructor: FactorInstantiator,
Expand Down
18 changes: 6 additions & 12 deletions lib/resource/Field.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
'use strict';

var Resource = require('./Resource');
var SaveableMixin = require('./mixins/SaveableMixin');
var utils = require('../utils');

/**
* @class Field
*
* @augments Resource
* @mixes SaveableMixin
*
* @description
* Encapsulates an account field, as part of a {@link Schema}.
*
Expand All @@ -18,16 +22,6 @@ function Field(){
}

utils.inherits(Field, Resource);
utils.applyMixin(Field, SaveableMixin);

/**
* Save changes to this resource.
*
* @param {Function} callback
* The function to call when the save operation is complete. Will be called
* with the parameters (err, updatedResource).
*/
Field.prototype.save = function save(callback) {
this.dataStore.saveResource(this, callback);
};

module.exports = Field;
module.exports = Field;
16 changes: 5 additions & 11 deletions lib/resource/InstanceResource.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,24 @@ var async = require('async');

var Resource = require('./Resource');
var SaveableMixin = require('./mixins/SaveableMixin');
var DeletableMixin = require('./mixins/DeletableMixin');
var utils = require('../utils');

/**
* @class InstanceResource
*
* Low-level resource wrapper for Stormpath resource objects.
*
* @mixes SaveableMixin
* @mixes DeletableMixin
*/
function InstanceResource() {
InstanceResource.super_.apply(this, arguments);
}

utils.inherits(InstanceResource, Resource);
utils.applyMixin(InstanceResource, SaveableMixin);
utils.applyMixin(InstanceResource, DeletableMixin);

/**
* @private
Expand Down Expand Up @@ -77,17 +82,6 @@ InstanceResource.prototype.get = function getResource() {
this.dataStore.getResource(val.href, query, ctor, callback);
};

/**
* Deletes this resource from the API.
*
* @param {Function} callback
* The function to call when the delete operation is complete. Will be called
* with the parameter (err).
*/
InstanceResource.prototype.delete = function deleteResource(callback) {
this.dataStore.deleteResource(this, callback);
};

/**
* Removes this resource, and all of it's linked resources, e.g. Custom Data, from the local cache.
*
Expand Down
22 changes: 7 additions & 15 deletions lib/resource/OAuthPolicy.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
'use strict';

var utils = require('../utils');
var InstanceResource = require('./InstanceResource');
var Resource = require('./Resource');
var SaveableMixin = require('./mixins/SaveableMixin');

/**
* @class OAuthPolicy
*
* @augments Resource
* @mixes SaveableMixin
*
* @description
*
* Encapsulates a OAuth Policy resource of an {@link Application}. For full
Expand All @@ -29,19 +33,7 @@ function OAuthPolicy() {
OAuthPolicy.super_.apply(this, arguments);
}

utils.inherits(OAuthPolicy, InstanceResource);
utils.inherits(OAuthPolicy, Resource);
utils.applyMixin(OAuthPolicy, SaveableMixin);

module.exports = OAuthPolicy;


/**
* @method OAuthPolicy.save
*
* @description
*
* Save changes to this resource.
*
* @param {Function} callback
* The function to call when the save operation is complete. Will be called
* with the parameters (err, updatedResource).
*/
7 changes: 5 additions & 2 deletions lib/resource/PasswordResetToken.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
'use strict';

var InstanceResource = require('./InstanceResource');
var Resource = require('./Resource');
var SaveableMixin = require('./mixins/SaveableMixin');
var utils = require('../utils');

/**
Expand All @@ -27,7 +28,9 @@ var utils = require('../utils');
function PasswordResetToken() {
PasswordResetToken.super_.apply(this, arguments);
}
utils.inherits(PasswordResetToken, InstanceResource);

utils.inherits(PasswordResetToken, Resource);
utils.applyMixin(PasswordResetToken, SaveableMixin);

module.exports = PasswordResetToken;

Expand Down
8 changes: 5 additions & 3 deletions lib/resource/ProviderData.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
'use strict';

var InstanceResource = require('./InstanceResource');
var Resource = require('./Resource');
var SaveableMixin = require('./mixins/SaveableMixin');
var utils = require('../utils');

/**
Expand All @@ -13,7 +14,7 @@ var utils = require('../utils');
* This class should not be manually constructed. It should be obtained from one of these methods:
* - {@link Account#getProviderData Account.getProviderData()}.
*
* @augments {InstanceResource}
* @augments {Resource}
*
* @param {Object} providerDataResource
* The JSON representation of this resource, retrieved the Stormpath REST API.
Expand All @@ -22,6 +23,7 @@ function ProviderData() {
ProviderData.super_.apply(this, arguments);
}

utils.inherits(ProviderData, InstanceResource);
utils.inherits(ProviderData, Resource);
utils.applyMixin(ProviderData, SaveableMixin);

module.exports = ProviderData;
Loading