Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.mdns.eu/nextcloud/passwords-client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius David Wieschollek <passwords.public@mdns.eu>2020-12-21 17:29:15 +0300
committerMarius David Wieschollek <passwords.public@mdns.eu>2020-12-21 17:29:15 +0300
commitb77143b905e7648001ab0f55946030e84a7a083e (patch)
treee78741acb787c03748ae1b287175835530c3bdbd /src/Client
parentb73a1bdb3eb34e9e2d00f25ca939f1deb6c7eaa2 (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.js197
-rw-r--r--src/Client/PasswordsClient.js24
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