UNPKG

magister.js

Version:

A JavaScript implementation of the Magister 6 API

65 lines (59 loc) 1.35 kB
import MagisterThing from './magisterThing' import File from './file' import { toString } from './util' class FileFolder extends MagisterThing { /** * @private * @param {Magister} magister * @param {Object} raw */ constructor(magister, raw) { super(magister) /** * @type {String} * @readonly */ this.id = toString(raw.Id) /** * @type {String} * @readonly */ this.name = raw.Naam /** * @type {Number} * @readonly */ this.rights = raw.Privilege /** * @type {String} * @readonly */ this.parentId = toString(raw.ParentId) } /** * @param {boolean} [fillPersons=false] * @returns {Promise<File[]>} */ files(fillPersons = false) { const url = `${this._magister._personUrl}/bronnen?parentId=${this.id}` return this._magister._privileges.needs('bronnen', 'read') .then(() => this._magister.http.get(url)) .then(res => res.json()) .then(res => { const promises = res.Items.filter(item => [ 0, 1, 2, 4 ].includes(item.Type)).map(f => { const file = new File(this._magister, this, f) return fillPersons ? file.addedBy.getFilled().then(() => file) : Promise.resolve(file) }) return Promise.all(promises) }) } /** * @returns {Promise<FileFolder[]>} */ folders() { return this._magister.fileFolders(this.id) } } export default FileFolder