nylas
Version:
A NodeJS wrapper for the Nylas REST API for email, contacts, and calendar.
132 lines (131 loc) • 4.29 kB
JavaScript
;
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;