messaging-api-messenger
Version:
Messaging API client for Messenger
207 lines • 6.51 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const form_data_1 = __importDefault(require("form-data"));
const omit_1 = __importDefault(require("lodash/omit"));
const messaging_api_common_1 = require("messaging-api-common");
function createMessage(payload, options = {}) {
const message = Object.assign({}, payload);
// snakecase support for backward compatibility
const quickReplies = options.quickReplies ||
// @ts-expect-error
options.quick_replies;
if (quickReplies && Array.isArray(quickReplies) && quickReplies.length >= 1) {
message.quickReplies = quickReplies;
}
return (0, messaging_api_common_1.camelcaseKeysDeep)(message);
}
function createText(text, options) {
return createMessage({ text }, options);
}
function createMessageFormData(payload, filedata, options = {}) {
const message = Object.assign({}, payload);
// snakecase support for backward compatibility
const quickReplies = options.quickReplies ||
// @ts-expect-error
options.quick_replies;
if (quickReplies && Array.isArray(quickReplies) && quickReplies.length >= 1) {
message.quickReplies = quickReplies;
}
const formdata = new form_data_1.default();
formdata.append('message', JSON.stringify((0, messaging_api_common_1.snakecaseKeysDeep)(message)));
formdata.append('filedata', filedata,
// FIXME: use pick for formdata options
(0, omit_1.default)(options, ['quickReplies']));
return formdata;
}
function createAttachment(attachment, options) {
return createMessage({
attachment,
}, options);
}
function createAttachmentFormData(attachment, filedata, options) {
return createMessageFormData({
attachment,
}, filedata, options);
}
function createAudio(audio, options) {
if (typeof audio === 'string') {
const attachment = {
type: 'audio',
payload: {
url: audio,
},
};
return createAttachment(attachment, options);
}
const attachment = {
type: 'audio',
payload: audio,
};
return createAttachment(attachment, options);
}
function createAudioFormData(audio, options) {
const attachment = {
type: 'audio',
payload: {},
};
return createAttachmentFormData(attachment, audio, options);
}
function createImage(image, options) {
if (typeof image === 'string') {
const attachment = {
type: 'image',
payload: {
url: image,
},
};
return createAttachment(attachment, options);
}
const attachment = {
type: 'image',
payload: image,
};
return createAttachment(attachment, options);
}
function createImageFormData(image, options) {
const attachment = {
type: 'image',
payload: {},
};
return createAttachmentFormData(attachment, image, options);
}
function createVideo(video, options) {
if (typeof video === 'string') {
const attachment = {
type: 'video',
payload: {
url: video,
},
};
return createAttachment(attachment, options);
}
const attachment = {
type: 'video',
payload: video,
};
return createAttachment(attachment, options);
}
function createVideoFormData(video, options) {
const attachment = {
type: 'video',
payload: {},
};
return createAttachmentFormData(attachment, video, options);
}
function createFile(file, options) {
if (typeof file === 'string') {
const attachment = {
type: 'file',
payload: {
url: file,
},
};
return createAttachment(attachment, options);
}
const attachment = {
type: 'file',
payload: file,
};
return createAttachment(attachment, options);
}
function createFileFormData(file, options) {
const attachment = {
type: 'file',
payload: {},
};
return createAttachmentFormData(attachment, file, options);
}
function createTemplate(payload, options) {
return createAttachment({
type: 'template',
payload,
}, options);
}
function createButtonTemplate(text, buttons, options) {
return createTemplate({
templateType: 'button',
text,
buttons,
}, options);
}
function createGenericTemplate(elements, options = {}) {
return createTemplate(Object.assign({ templateType: 'generic', elements }, (options.imageAspectRatio
? { imageAspectRatio: options.imageAspectRatio }
: {})), options);
}
function createMediaTemplate(elements, options) {
return createTemplate({
templateType: 'media',
elements,
}, options);
}
function createReceiptTemplate(receipt, options) {
return createTemplate(Object.assign({ templateType: 'receipt' }, receipt), options);
}
function createAirlineBoardingPassTemplate(attrs, options) {
return createTemplate(Object.assign({ templateType: 'airline_boardingpass' }, attrs), options);
}
function createAirlineCheckinTemplate(attrs, options) {
return createTemplate(Object.assign({ templateType: 'airline_checkin' }, attrs), options);
}
function createAirlineItineraryTemplate(attrs, options) {
return createTemplate(Object.assign({ templateType: 'airline_itinerary' }, attrs), options);
}
function createAirlineUpdateTemplate(attrs, options) {
return createTemplate(Object.assign({ templateType: 'airline_update' }, attrs), options);
}
function createOneTimeNotifReqTemplate(attrs, options) {
return createTemplate(Object.assign({ templateType: 'one_time_notif_req' }, attrs), options);
}
const Messenger = {
createMessage,
createText,
createAttachment,
createAudio,
createAudioFormData,
createImage,
createImageFormData,
createVideo,
createVideoFormData,
createFile,
createFileFormData,
createTemplate,
createButtonTemplate,
createGenericTemplate,
createMediaTemplate,
createReceiptTemplate,
createAirlineBoardingPassTemplate,
createAirlineCheckinTemplate,
createAirlineItineraryTemplate,
createAirlineUpdateTemplate,
createOneTimeNotifReqTemplate,
};
exports.default = Messenger;
//# sourceMappingURL=Messenger.js.map