UNPKG

nylas

Version:

A NodeJS wrapper for the Nylas REST API for email, contacts, and calendar.

132 lines (131 loc) 4.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Drafts = void 0; const messages_js_1 = require("./messages.js"); const resource_js_1 = require("./resource.js"); const utils_js_1 = require("../utils.js"); const utils_js_2 = require("../utils.js"); /** * Nylas Drafts API * * The Nylas Drafts API allows you to list, find, update, delete, and send drafts on user accounts. */ class Drafts extends resource_js_1.Resource { /** * Return all Drafts * @return A list of drafts */ list({ identifier, queryParams, overrides, }) { return super._list({ queryParams, overrides, path: (0, utils_js_2.makePathParams)('/v3/grants/{identifier}/drafts', { identifier }), }); } /** * Return a Draft * @return The draft */ find({ identifier, draftId, overrides, }) { return super._find({ path: (0, utils_js_2.makePathParams)('/v3/grants/{identifier}/drafts/{draftId}', { identifier, draftId, }), overrides, }); } /** * Return a Draft * @return The draft */ async create({ identifier, requestBody, overrides, }) { const path = (0, utils_js_2.makePathParams)('/v3/grants/{identifier}/drafts', { identifier, }); // Use form data if the total payload size (body + attachments) is greater than 3mb const totalPayloadSize = (0, utils_js_1.calculateTotalPayloadSize)(requestBody); if (totalPayloadSize >= messages_js_1.Messages.MAXIMUM_JSON_ATTACHMENT_SIZE) { const form = messages_js_1.Messages._buildFormRequest(requestBody); return this.apiClient.request({ method: 'POST', path, form, overrides, }); } else if (requestBody.attachments) { const processedAttachments = await (0, utils_js_1.encodeAttachmentContent)(requestBody.attachments); requestBody = { ...requestBody, attachments: processedAttachments, }; } return super._create({ path, requestBody, overrides, }); } /** * Update a Draft * @return The updated draft */ async update({ identifier, draftId, requestBody, overrides, }) { const path = (0, utils_js_2.makePathParams)('/v3/grants/{identifier}/drafts/{draftId}', { identifier, draftId, }); // Use form data if the total payload size (body + attachments) is greater than 3mb const totalPayloadSize = (0, utils_js_1.calculateTotalPayloadSize)(requestBody); if (totalPayloadSize >= messages_js_1.Messages.MAXIMUM_JSON_ATTACHMENT_SIZE) { const form = messages_js_1.Messages._buildFormRequest(requestBody); return this.apiClient.request({ method: 'PUT', path, form, overrides, }); } else if (requestBody.attachments) { const processedAttachments = await (0, utils_js_1.encodeAttachmentContent)(requestBody.attachments); requestBody = { ...requestBody, attachments: processedAttachments, }; } return super._update({ path, requestBody, overrides, }); } /** * Delete a Draft * @return The deleted draft */ destroy({ identifier, draftId, overrides, }) { return super._destroy({ path: (0, utils_js_2.makePathParams)('/v3/grants/{identifier}/drafts/{draftId}', { identifier, draftId, }), overrides, }); } /** * Send a Draft * @return The sent message */ send({ identifier, draftId, overrides, }) { return super._create({ path: (0, utils_js_2.makePathParams)('/v3/grants/{identifier}/drafts/{draftId}', { identifier, draftId, }), requestBody: {}, overrides, }); } } exports.Drafts = Drafts;