UNPKG

@harishreddym/baqend

Version:

Baqend JavaScript SDK

96 lines (81 loc) 3.21 kB
'use strict'; const message = require('../message'); const deprecated = require('./deprecated'); /** * An executor of Modules running on Baqend. * * @alias util.Modules */ class Modules { /** * @param {EntityManager} entityManager */ constructor(entityManager) { /** * @type EntityManager */ this.entityManager = entityManager; } /** * Calls the module, which is identified by the given bucket * * The optional query parameter will be attached as GET-parameters. * * @param {string} bucket Name of the module * @param {Object<string, string>|string} [query] GET-Parameter as key-value-pairs or query string * @param {Object=} options Additional request options * @param {string=} options.responseType The type used to provide the response data, defaults to text oder json * depends on the received data, can be one of arraybuffer, blob, json, text, base64, data-url * @param {Function=} doneCallback * @param {Function=} failCallback * @return {Promise<*>} */ get(bucket, query, options, doneCallback, failCallback) { if (query instanceof Function) { return this.get(bucket, {}, query, options, doneCallback); } if (options instanceof Function) { return this.get(bucket, query, {}, options, doneCallback); } const opt = options || {}; const msg = new message.GetBaqendModule(bucket) .addQueryString(query) .responseType(opt.responseType || null); return this.send(msg, doneCallback, failCallback); } /** * Calls the module, which is identified by the given bucket * * @param {string} bucket Name of the module * @param {string|Blob|File|ArrayBuffer|FormData|json} [body] The POST-body data to send * @param {Object=} options Additional request options * @param {string=} options.requestType A optional type hint used to correctly interpret the provided data, can be one * of arraybuffer, blob, json, text, base64, data-url, form * @param {string=} options.mimeType The mimType of the body. Defaults to the mimeType of the provided data if * it is a file object, blob or data-url * @param {string=} options.responseType The type used to provide the response data, defaults to text oder json * depends on the received data, can be one of arraybuffer, blob, json, text, base64, data-url * @param {Function=} doneCallback * @param {Function=} failCallback * @return {Promise<*>} */ post(bucket, body, options, doneCallback, failCallback) { if (options instanceof Function) { return this.post(bucket, body, {}, options, doneCallback); } const opt = options || {}; const msg = new message.PostBaqendModule(bucket) .entity(body, opt.requestType) .mimeType(opt.mimeType || null) .responseType(opt.responseType || null); return this.send(msg, doneCallback, failCallback); } send(msg, doneCallback, failCallback) { return this.entityManager.send(msg) .then(response => response.entity) .then(doneCallback, failCallback); } } deprecated(Modules.prototype, '_entityManager', 'entityManager'); deprecated(Modules.prototype, '_send', 'send'); module.exports = Modules;