teams-web-send
Version:
Post messages to Microsoft Teams directly from the browser!
76 lines (64 loc) • 2.32 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = global || self, factory(global.tws = {}));
}(this, (function (exports) { 'use strict';
function isIE() {
var ua = window.navigator.userAgent;
var msie = ua.indexOf('MSIE ');
var trident = ua.indexOf('Trident');
var edge = ua.indexOf('Edge');
return msie > 0 || trident > 0 || edge > 0;
}
function prepareMessage(message) {
return message.substring(0, message.lastIndexOf('}')).concat(',"trash": "');
}
function bootstrap(host) {
var targetHost = host || document.body;
var isIEBrowser = isIE();
var sendForm = document.createElement('form');
sendForm.style.display = 'none';
sendForm.className = 'mstws-send-form';
sendForm.method = 'POST';
sendForm.enctype = 'text/plain';
sendForm.target = 'mstws-send-frame';
var sendInput = document.createElement('input');
sendInput.type = 'text';
sendInput.value = '"}';
var sendFrame = document.createElement('iframe');
sendFrame.tabIndex = -1;
sendFrame.name = 'mstws-send-frame';
var resolveResult;
sendFrame.addEventListener('load', function () {
if (!resolveResult) {
return;
}
resolveResult(); // cleanup references
resolveResult = null;
});
sendForm.appendChild(sendInput);
sendForm.appendChild(sendFrame);
targetHost.appendChild(sendForm);
return function (webhookUrl, message) {
return new Promise(function (resolve, reject) {
try {
sendForm.action = webhookUrl;
var postData = prepareMessage(message);
if (isIEBrowser) {
postData = postData.replace(/'/g, "\\'").replace(/"/g, "'").replace(/\s\s+/g, '');
sendInput.value = "'}";
}
sendInput.name = postData;
sendForm.submit();
} catch (e) {
console.error(e);
reject(new Error('Incorrectly formatted message.'));
}
resolveResult = resolve;
});
};
}
exports.bootstrap = bootstrap;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=tws.umd.development.js.map