Skip to content

Commit

Permalink
refactor: use Symbols for private properties CMS-2781
Browse files Browse the repository at this point in the history
  • Loading branch information
simon-scherzinger committed May 10, 2017
1 parent edeb716 commit 59d21d6
Show file tree
Hide file tree
Showing 32 changed files with 411 additions and 404 deletions.
91 changes: 42 additions & 49 deletions src/Accounts.js
@@ -1,6 +1,6 @@
import validator from 'json-schema-remote';

import Core from './Core';
import Core, { environmentSymbol, tokenStoreSymbol } from './Core';
import {
get,
getEmpty,
Expand All @@ -18,7 +18,6 @@ import InvalidPermissionsResource from './resources/accounts/InvalidPermissionsR
import InvitesResource from './resources/accounts/InvitesResource';
import GroupList from './resources/accounts/GroupList';
import GroupResource from './resources/accounts/GroupResource';
import TokenStoreFactory from './TokenStore';

const urls = {
live: 'https://accounts.entrecode.de/',
Expand All @@ -40,14 +39,8 @@ export default class Accounts extends Core {
*
* @param {?environment} environment the {@link environment} to connect to.
*/
constructor(environment) {
if (environment && !{}.hasOwnProperty.call(urls, environment)) {
throw new Error('invalid environment specified');
}

super(urls[environment || 'live']);
this.environment = environment || 'live';
this.tokenStore = TokenStoreFactory(environment || 'live');
constructor(environment = 'live') {
super(urls, environment);
}

/**
Expand All @@ -65,7 +58,7 @@ export default class Accounts extends Core {
throw new Error('ec.sdk currently only supports client \'rest\'');
}

this.tokenStore.setClientID(clientID);
this[tokenStoreSymbol].setClientID(clientID);
return this;
}

Expand Down Expand Up @@ -98,10 +91,10 @@ export default class Accounts extends Core {
return this.follow('ec:accounts/options');
})
.then((request) => {
request.withTemplateParameters(optionsToQuery(options, this.resource.link('ec:accounts/options').href));
return get(this.environment, request);
request.withTemplateParameters(optionsToQuery(options, this.getLink('ec:accounts/options').href));
return get(this[environmentSymbol], request);
})
.then(([res, traversal]) => new AccountList(res, this.environment, traversal));
.then(([res, traversal]) => new AccountList(res, this[environmentSymbol], traversal));
}

/**
Expand All @@ -126,9 +119,9 @@ export default class Accounts extends Core {
})
.then((request) => {
request.withTemplateParameters({ accountid: accountID });
return get(this.environment, request);
return get(this[environmentSymbol], request);
})
.then(([res, traversal]) => new AccountResource(res, this.environment, traversal));
.then(([res, traversal]) => new AccountResource(res, this[environmentSymbol], traversal));
}

/**
Expand All @@ -145,8 +138,8 @@ export default class Accounts extends Core {
me() {
return Promise.resolve()
.then(() => this.follow('ec:account'))
.then(request => get(this.environment, request))
.then(([res, traversal]) => new AccountResource(res, this.environment, traversal));
.then(request => get(this[environmentSymbol], request))
.then(([res, traversal]) => new AccountResource(res, this[environmentSymbol], traversal));
}

/**
Expand Down Expand Up @@ -178,10 +171,10 @@ export default class Accounts extends Core {
return this.follow('ec:acc/groups/options');
})
.then((request) => {
request.withTemplateParameters(optionsToQuery(options, this.resource.link('ec:acc/groups/options').href));
return get(this.environment, request);
request.withTemplateParameters(optionsToQuery(options, this.getLink('ec:acc/groups/options').href));
return get(this[environmentSymbol], request);
})
.then(([res, traversal]) => new GroupList(res, this.environment, traversal));
.then(([res, traversal]) => new GroupList(res, this[environmentSymbol], traversal));
}

/**
Expand All @@ -207,9 +200,9 @@ export default class Accounts extends Core {
})
.then((request) => {
request.withTemplateParameters({ groupid: groupID });
return get(this.environment, request);
return get(this[environmentSymbol], request);
})
.then(([res, traversal]) => new GroupResource(res, this.environment, traversal));
.then(([res, traversal]) => new GroupResource(res, this[environmentSymbol], traversal));
}

/**
Expand All @@ -228,8 +221,8 @@ export default class Accounts extends Core {
})
.then(link => validator.validate(group, `${link.profile}-template`))
.then(() => this.follow('ec:acc/groups'))
.then(request => post(this.environment, request, group))
.then(([c, traversal]) => new ClientResource(c, this.environment, traversal));
.then(request => post(this[environmentSymbol], request, group))
.then(([c, traversal]) => new ClientResource(c, this[environmentSymbol], traversal));
}

/**
Expand Down Expand Up @@ -267,10 +260,10 @@ export default class Accounts extends Core {
return this.follow('ec:acc/clients/options');
})
.then((request) => {
request.withTemplateParameters(optionsToQuery(options, this.resource.link('ec:acc/clients/options').href));
return get(this.environment, request);
request.withTemplateParameters(optionsToQuery(options, this.getLink('ec:acc/clients/options').href));
return get(this[environmentSymbol], request);
})
.then(([res, traversal]) => new ClientList(res, this.environment, traversal));
.then(([res, traversal]) => new ClientList(res, this[environmentSymbol], traversal));
}

/**
Expand All @@ -296,9 +289,9 @@ export default class Accounts extends Core {
})
.then((request) => {
request.withTemplateParameters({ clientid: clientID });
return get(this.environment, request);
return get(this[environmentSymbol], request);
})
.then(([res, traversal]) => new ClientResource(res, this.environment, traversal));
.then(([res, traversal]) => new ClientResource(res, this[environmentSymbol], traversal));
}

/**
Expand All @@ -317,8 +310,8 @@ export default class Accounts extends Core {
})
.then(link => validator.validate(client, link.profile))
.then(() => this.follow('ec:acc/clients'))
.then(request => post(this.environment, request, client))
.then(([c, traversal]) => new ClientResource(c, this.environment, traversal));
.then(request => post(this[environmentSymbol], request, client))
.then(([c, traversal]) => new ClientResource(c, this[environmentSymbol], traversal));
}

/**
Expand All @@ -335,7 +328,7 @@ export default class Accounts extends Core {
*/
createApiToken() {
return this.follow('ec:auth/create-anonymous')
.then(request => post(this.environment, request, {}))
.then(request => post(this[environmentSymbol], request, {}))
.then(([tokenResponse]) => tokenResponse);
}

Expand All @@ -360,8 +353,8 @@ export default class Accounts extends Core {
*/
invites() {
return this.follow('ec:invites')
.then(request => get(this.environment, request))
.then(([invites, traversal]) => new InvitesResource(invites, this.environment, traversal));
.then(request => get(this[environmentSymbol], request))
.then(([invites, traversal]) => new InvitesResource(invites, this[environmentSymbol], traversal));
}

/**
Expand All @@ -387,8 +380,8 @@ export default class Accounts extends Core {

return this.follow('ec:invites');
})
.then(request => post(this.environment, request, { count: count || 1 }))
.then(([invites, traversal]) => new InvitesResource(invites, this.environment, traversal));
.then(request => post(this[environmentSymbol], request, { count: count || 1 }))
.then(([invites, traversal]) => new InvitesResource(invites, this[environmentSymbol], traversal));
}

/**
Expand All @@ -405,9 +398,9 @@ export default class Accounts extends Core {
*/
invalidPermissions() {
return this.follow('ec:invalid-permissions')
.then(request => get(this.environment, request))
.then(request => get(this[environmentSymbol], request))
.then(([resource, traversal]) =>
new InvalidPermissionsResource(resource, this.environment, traversal));
new InvalidPermissionsResource(resource, this[environmentSymbol], traversal));
}

/**
Expand Down Expand Up @@ -437,7 +430,7 @@ export default class Accounts extends Core {
})
.then((request) => {
request.withTemplateParameters({ email });
return get(this.environment, request);
return get(this[environmentSymbol], request);
})
.then(([a]) => a.available);
}
Expand Down Expand Up @@ -466,22 +459,22 @@ export default class Accounts extends Core {
if (!password) {
throw new Error('password must be defined');
}
if (!this.tokenStore.hasClientID()) {
if (!this[tokenStoreSymbol].hasClientID()) {
throw new Error('clientID must be set with Account#setClientID(clientID: string)');
}

return this.follow('ec:auth/register');
})
.then((request) => {
request.withTemplateParameters({
clientID: this.tokenStore.getClientID(),
clientID: this[tokenStoreSymbol].getClientID(),
invite,
});
return getUrl(this.environment, request);
return getUrl(this[environmentSymbol], request);
})
.then(url => superagentFormPost(url, { email, password }))
.then((token) => {
this.tokenStore.set(token.token);
this[tokenStoreSymbol].set(token.token);
return Promise.resolve(token.token);
});
}
Expand All @@ -502,17 +495,17 @@ export default class Accounts extends Core {
if (!email) {
throw new Error('email must be defined');
}
if (!this.tokenStore.hasClientID()) {
if (!this[tokenStoreSymbol].hasClientID()) {
throw new Error('clientID must be set with Account#setClientID(clientID: string)');
}

return this.follow('ec:auth/password-reset');
}).then((request) => {
request.withTemplateParameters({
clientID: this.tokenStore.getClientID(),
clientID: this[tokenStoreSymbol].getClientID(),
email,
});
return getEmpty(this.environment, request);
return getEmpty(this[environmentSymbol], request);
});
}

Expand All @@ -533,12 +526,12 @@ export default class Accounts extends Core {
throw new Error('email must be defined');
}

if (!this.tokenStore.has()) {
if (!this[tokenStoreSymbol].has()) {
throw new Error('not logged in.');
}

return this.follow('ec:auth/change-email');
})
.then(request => postEmpty(this.environment, request, { email }));
.then(request => postEmpty(this[environmentSymbol], request, { email }));
}
}

0 comments on commit 59d21d6

Please sign in to comment.