diff options
author | Marius David Wieschollek <passwords.public@mdns.eu> | 2020-02-19 23:30:54 +0300 |
---|---|---|
committer | Marius David Wieschollek <passwords.public@mdns.eu> | 2020-02-19 23:30:54 +0300 |
commit | 44dc505f5a92427bda2cb74a7b9f40ff16c8f592 (patch) | |
tree | bd282c790700f059705da4a44f6e9172d8acb937 | |
parent | 2f933ccfabf0b33fd25931bf174901c4db7d04de (diff) |
Add settings api support to api
Signed-off-by: Marius David Wieschollek <passwords.public@mdns.eu>
-rw-r--r-- | src/Api/Api.js | 8 | ||||
-rw-r--r-- | src/Converter/SettingConverter.js | 36 | ||||
-rw-r--r-- | src/Model/AbstractModel.js | 4 | ||||
-rw-r--r-- | src/Model/AbstractRevisionModel.js | 24 | ||||
-rw-r--r-- | src/Model/CustomField/AbstractField.js | 6 | ||||
-rw-r--r-- | src/Repositories/SettingRepository.js | 59 |
6 files changed, 89 insertions, 48 deletions
diff --git a/src/Api/Api.js b/src/Api/Api.js index 75a6fbf..be87216 100644 --- a/src/Api/Api.js +++ b/src/Api/Api.js @@ -54,6 +54,8 @@ import CustomFieldCollection from '../Collection/CustomFieldCollection'; import CustomFieldConverter from '../Converter/CustomFieldConverter'; import Setting from '../Model/Setting/Setting'; import SettingRepository from '../Repositories/SettingRepository'; +import SettingConverter from '../Converter/SettingConverter'; +import SettingCollection from '../Collection/SettingCollection'; export default class Api { @@ -302,13 +304,15 @@ export default class Api { password: (...e) => { return new PasswordCollection(this.getInstance('converter.password'), ...e); }, folder : (...e) => { return new FolderCollection(this.getInstance('converter.folder'), ...e); }, field : (...e) => { return new CustomFieldCollection(this.getInstance('converter.field'), ...e); }, - tag : (...e) => { return new TagCollection(this.getInstance('converter.tag'), ...e); } + tag : (...e) => { return new TagCollection(this.getInstance('converter.tag'), ...e); }, + setting : (...e) => { return new SettingCollection(this.getInstance('converter.setting'), ...e); } }, converter : { password: () => { return new PasswordConverter(this); }, folder : () => { return new FolderConverter(this); }, field : () => { return new CustomFieldConverter(this); }, - tag : () => { return new TagConverter(this); } + tag : () => { return new TagConverter(this); }, + setting : () => { return new SettingConverter(this); } }, model : { password : Password, diff --git a/src/Converter/SettingConverter.js b/src/Converter/SettingConverter.js index 831c470..cd7bf8d 100644 --- a/src/Converter/SettingConverter.js +++ b/src/Converter/SettingConverter.js @@ -62,6 +62,42 @@ export default class SettingConverter { } /** + * + * @param {Object} object + * @return {SettingCollection} + */ + fromApiObject(object) { + let settings = []; + + for(let key in object) { + if(!object.hasOwnProperty(key)) continue; + let index = key.indexOf('.'), + scope = key.substr(0, index), + name = key.substring(index + 1), + value = object[key]; + + settings.push(this.fromObject({scope, name, value})); + } + + return this._api.getClass('collection.setting', settings); + } + + /** + * @param {SettingCollection} collection + * @return {Object[]} + */ + toApiObject(collection) { + let object = {}; + + for(let setting of collection) { + let key = `${setting.scope}.${setting.name}`; + object[key] = setting.value; + } + + return object; + } + + /** * @param {SettingCollection} collection * @return {Object[]} */ diff --git a/src/Model/AbstractModel.js b/src/Model/AbstractModel.js index 9a37d89..bf69014 100644 --- a/src/Model/AbstractModel.js +++ b/src/Model/AbstractModel.js @@ -36,7 +36,7 @@ export default class AbstractModel { * @param {String} property * @param {*} value * - * @return {AbstractModel} + * @return {this} * @api */ setProperty(property, value) { @@ -69,7 +69,7 @@ export default class AbstractModel { /** * @param {Object} properties * - * @return {AbstractModel} + * @return {this} * @api */ setProperties(properties) { diff --git a/src/Model/AbstractRevisionModel.js b/src/Model/AbstractRevisionModel.js index 36c2a05..93c455c 100644 --- a/src/Model/AbstractRevisionModel.js +++ b/src/Model/AbstractRevisionModel.js @@ -13,7 +13,7 @@ export default class AbstractRevisionModel extends AbstractModel { /** * @param {String} value * - * @return {AbstractModel} + * @return {this} * @api */ setId(value) { @@ -31,7 +31,7 @@ export default class AbstractRevisionModel extends AbstractModel { /** * @param {string} value * - * @return {Password} + * @return {this} * @api */ setRevision(value) { @@ -49,7 +49,7 @@ export default class AbstractRevisionModel extends AbstractModel { /** * @param {string} value * - * @return {Password} + * @return {this} * @api */ setCseType(value) { @@ -67,7 +67,7 @@ export default class AbstractRevisionModel extends AbstractModel { /** * * @param {string} value - * @return {Password} + * @return {this} * @api */ setCseKey(value) { @@ -85,7 +85,7 @@ export default class AbstractRevisionModel extends AbstractModel { /** * @param {string} value * - * @return {Password} + * @return {this} * @api */ setSseType(value) { @@ -103,7 +103,7 @@ export default class AbstractRevisionModel extends AbstractModel { /** * @param {string} value * - * @return {Password} + * @return {this} * @api */ setClient(value) { @@ -121,7 +121,7 @@ export default class AbstractRevisionModel extends AbstractModel { /** * @param {Boolean} value * - * @return {Password} + * @return {this} * @api */ setHidden(value) { @@ -147,7 +147,7 @@ export default class AbstractRevisionModel extends AbstractModel { /** * @param {Boolean} value * - * @return {Password} + * @return {this} * @api */ setTrashed(value) { @@ -173,7 +173,7 @@ export default class AbstractRevisionModel extends AbstractModel { /** * @param {Boolean} value * - * @return {Password} + * @return {this} * @api */ setFavorite(value) { @@ -191,7 +191,7 @@ export default class AbstractRevisionModel extends AbstractModel { /** * @param {Date} value * - * @return {Password} + * @return {this} * @api */ setEdited(value) { @@ -209,7 +209,7 @@ export default class AbstractRevisionModel extends AbstractModel { /** * @param {Date} value * - * @return {Password} + * @return {this} * @api */ setCreated(value) { @@ -227,7 +227,7 @@ export default class AbstractRevisionModel extends AbstractModel { /** * @param {Date} value * - * @return {Password} + * @return {this} * @api */ setUpdated(value) { diff --git a/src/Model/CustomField/AbstractField.js b/src/Model/CustomField/AbstractField.js index c67efb7..d1576d7 100644 --- a/src/Model/CustomField/AbstractField.js +++ b/src/Model/CustomField/AbstractField.js @@ -46,7 +46,7 @@ export default class AbstractField extends AbstractModel { /** * @param {String} value - * @return {AbstractField} + * @return {this} */ setType(value) { return this; @@ -61,7 +61,7 @@ export default class AbstractField extends AbstractModel { /** * @param {String} value - * @return {AbstractField} + * @return {this} */ setLabel(value) { this.label = value; @@ -78,7 +78,7 @@ export default class AbstractField extends AbstractModel { /** * @param {String} value - * @return {AbstractField} + * @return {this} */ setValue(value) { this.value = value; diff --git a/src/Repositories/SettingRepository.js b/src/Repositories/SettingRepository.js index c24f63c..c6430df 100644 --- a/src/Repositories/SettingRepository.js +++ b/src/Repositories/SettingRepository.js @@ -8,8 +8,8 @@ export default class SettingRepository { this._api = api; /** @type Cache **/ this._cache = api.getInstance('cache.cache'); - /** @type AbstractConverter **/ - //this._converter = api.getInstance(`converter.setting`); + /** @type SettingConverter **/ + this._converter = api.getInstance(`converter.setting`); } /** @@ -22,56 +22,57 @@ export default class SettingRepository { return this; } - findAll() { - let request = this._api.getRequest() - .setPath(`1.0/settings/list`); + async findAll() { + let request = await this._api.getRequest() + .setPath(`1.0/settings/list`) + .send(); + + return this._converter.fromApiObject(request.getData()); } - findByScope(scope) { - let request = this._api.getRequest() + async findByScope(scope) { + let request = await this._api.getRequest() .setPath(`1.0/settings/list`) - .setData([scope]); + .setData({scopes: [scope]}) + .send(); + + return this._converter.fromApiObject(request.getData()); } - findByScopes(scopes) { - let request = this._api.getRequest() + async findByScopes(scopes) { + let request = await this._api.getRequest() .setPath(`1.0/settings/list`) - .setData([scopes]); + .setData({scopes}) + .send(); + + return this._converter.fromApiObject(request.getData()); } async findByName(name) { - let data = await this._api.getRequest() + let request = await this._api.getRequest() .setPath(`1.0/settings/get`) .setData([name]) .send(); + + return this._converter.fromApiObject(request.getData()); } - findByNames(names) { - let request = this._api.getRequest() + async findByNames(names) { + let request = await this._api.getRequest() .setPath(`1.0/settings/get`) .setData(names); + return this._converter.fromApiObject(request.getData()); } - set(setting) { - let request = this._api.getRequest() + async set(setting) { + let request = await this._api.getRequest() .setPath(`1.0/settings/set`) .setData(setting); } - reset(setting) { - let request = this._api.getRequest() + async reset(setting) { + let request = await this._api.getRequest() .setPath(`1.0/settings/reset`) .setData(setting); } - - /** - * - * @param {Object} data - * @returns {Promise<AbstractRevisionModel>} - * @private - */ - async _dataToModel(data) { - - return model; - } }
\ No newline at end of file |