diff options
author | Marius David Wieschollek <passwords.public@mdns.eu> | 2020-12-21 17:29:15 +0300 |
---|---|---|
committer | Marius David Wieschollek <passwords.public@mdns.eu> | 2020-12-21 17:29:15 +0300 |
commit | b77143b905e7648001ab0f55946030e84a7a083e (patch) | |
tree | e78741acb787c03748ae1b287175835530c3bdbd /src/Client | |
parent | b73a1bdb3eb34e9e2d00f25ca939f1deb6c7eaa2 (diff) |
Rename Api to PasswordsClient to match package name
Signed-off-by: Marius David Wieschollek <passwords.public@mdns.eu>
Diffstat (limited to 'src/Client')
-rw-r--r-- | src/Client/BasicPasswordsClient.js | 197 | ||||
-rw-r--r-- | src/Client/PasswordsClient.js | 24 |
2 files changed, 221 insertions, 0 deletions
diff --git a/src/Client/BasicPasswordsClient.js b/src/Client/BasicPasswordsClient.js new file mode 100644 index 0000000..5c194d1 --- /dev/null +++ b/src/Client/BasicPasswordsClient.js @@ -0,0 +1,197 @@ +import ConfigurationError from "../Exception/ConfigruationError"; + +export default class BasicPasswordsClient { + + /** + * + * @param server + * @param config + * @param classes + */ + constructor(server, config, classes) { + this._setConfig(config); + this._classes = classes; + this._classes.setInstance('model.server', server); + this._classes.setInstance('api', this); + + this._server = server; + this._session = this._classes.getInstance('model.session', server.getUser(), server.getToken()); + this._events = this._classes.getInstance('event.event'); + } + + /** + * + * @param {String} event + * @param {Function} listener + */ + on(event, listener) { + this._events.on(event, listener); + } + + /** + * + * @param {String} event + * @param {Function} listener + */ + once(event, listener) { + this._events.once(event, listener); + } + + /** + * + * @param {String} event + * @param {Function} listener + */ + off(event, listener) { + this._events.off(event, listener); + } + + /** + * + * @param {String} event + * @param {Object} data + */ + emit(event, data) { + this._events.emit(event, data); + } + + /** + * + * @return {Server} + */ + getServer() { + return this._server; + } + + /** + * + * @return {ApiRequest} + */ + getRequest() { + /** @type {ApiRequest} **/ + let request = this.getClass('network.request', this, this._server.getApiUrl(), this.getSession()); + if(this._config.userAgent !== null) { + request.setUserAgent(this._config.userAgent); + } + + return request; + } + + /** + * @returns {Session} + */ + getSession() { + return this._session + .setUser(this._server.getUser()) + .setToken(this._server.getToken()); + } + + /** + * + * @returns {SessionAuthorization} + */ + getSessionAuthorization() { + return this.getInstance('authorization.session'); + } + + /** + * + * @returns {PasswordRepository} + */ + getPasswordRepository() { + return this.getInstance('repository.password'); + } + + /** + * + * @returns {FolderRepository} + */ + getFolderRepository() { + return this.getInstance('repository.folder'); + } + + /** + * + * @returns {TagRepository} + */ + getTagRepository() { + return this.getInstance('repository.tag'); + } + + /** + * + * @returns {CSEv1Encryption} + */ + getCseV1Encryption() { + return this.getInstance('encryption.csev1'); + } + + /** + * + * @returns {CSEv1Encryption} + */ + getDefaultEncryption() { + let mode = 'auto'; + if(this._config.hasOwnProperty('defaultEncryption')) { + mode = this._config.defaultEncryption; + } + + if(mode === 'none') { + return this.getInstance('encryption.none'); + } + if(mode === 'csev1') { + return this.getInstance('encryption.csev1'); + } + + let csev1 = this.getInstance('encryption.csev1'); + if(csev1.enabled()) return csev1; + + return this.getInstance('encryption.none'); + } + + /** + * + * @param parameters + * @return {*} + */ + getInstance(...parameters) { + return this._classes.getInstance(...parameters) + } + + /** + * + * @param parameters + * @return {*} + */ + setInstance(...parameters) { + return this._classes.setInstance(...parameters) + } + + /** + * + * @param parameters + * @return {*} + */ + getClass(...parameters) { + return this._classes.getClass(...parameters) + } + + /** + * + * @param config + * @private + */ + _setConfig(config) { + if(!config.hasOwnProperty('userAgent')) { + config.userAgent = null; + } + + if(config.hasOwnProperty('defaultEncryption') && ['auto', 'none', 'csev1'].indexOf(config.defaultEncryption) === -1) { + throw new ConfigurationError('Invalid default encryption'); + } else { + config.defaultEncryption = 'auto'; + } + + this._config = config; + } +}
\ No newline at end of file diff --git a/src/Client/PasswordsClient.js b/src/Client/PasswordsClient.js new file mode 100644 index 0000000..24e40b6 --- /dev/null +++ b/src/Client/PasswordsClient.js @@ -0,0 +1,24 @@ +import BasicClassLoader from "../ClassLoader/BasicClassLoader"; +import DefaultClassLoader from "../ClassLoader/DefaultClassLoader"; +import BasicPasswordsClient from "./BasicPasswordsClient"; + +export default class PasswordsClient extends BasicPasswordsClient { + + /** + * + * @param {(Object|Server)} server + * @param {Object} [config={}] + * @param {(Object|BasicClassLoader|DefaultClassLoader)} [classes={}] + */ + constructor(server, config = {}, classes = {}) { + if(!(classes instanceof BasicClassLoader)) { + classes = new DefaultClassLoader(classes); + } + + if(!server.getApiUrl || typeof server.getApiUrl !== "function") { + server = classes.getInstance('model.server', server) + } + + super(server, config, classes); + } +}
\ No newline at end of file |