UNPKG

@bs-plugins/o365

Version:

Bamboo Shell plugin for Office 365

1 lines 10.3 kB
{"version":3,"file":"plugin.mjs","sources":["../out/main.js"],"sourcesContent":["// imports here\nimport { bs, BSPlugin } from \"@bs-core/shell\";\nimport querystring from \"node:querystring\";\n// Misc consts here\nconst EMAIL_REF_GUID = `String {a75e89ac-9033-49c0-a4fc-52d83c8468ac} Name bamboo-sh-o365-ref-code`;\n// O365 class here\nexport class O365 extends BSPlugin {\n // Properties here\n _appId;\n _clientSecret;\n _tenantId;\n _grantType;\n _resource;\n _tokenGracePeriod;\n _tokenTimeout;\n _token;\n constructor(name, o365Config) {\n super(name, \n // NOTE: PLUGIN_VERSION is replaced with package.json#version by a\n // rollup plugin at build time\n \"PLUGIN_VERSION\");\n let config = {\n grantType: \"client_credentials\",\n resource: \"https://graph.microsoft.com\",\n tokenGracePeriod: 5,\n ...o365Config,\n };\n this._appId = config.appId;\n this._clientSecret = config.clientSecret;\n this._tenantId = config.tenantId;\n this._grantType = config.grantType;\n this._resource = config.resource;\n this._tokenGracePeriod = config.tokenGracePeriod * 60 * 1000; // Convert to ms;\n this._token = null;\n }\n // Protected methods here\n // Private methods here\n // Public methods here\n async login() {\n this.info(\"Logging in and getting new token now!\");\n let data = {\n client_id: this._appId,\n client_secret: this._clientSecret,\n scope: `${this._resource}/.default`,\n grant_type: this._grantType,\n };\n let res = await bs\n .request(\"https://login.microsoftonline.com\", `/${this._tenantId}/oauth2/v2.0/token`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n body: querystring.stringify(data),\n })\n .catch((e) => {\n this.error(\"Error while getting new token - (%s)\", e);\n // Make sure to explicitly set the token to undefined\n this._token = null;\n // Try again in 1 minute\n this.info(\"Will try and get new token again in 1 min\");\n this._tokenTimeout = setTimeout(() => this.login(), 60 * 1000);\n });\n if (res !== undefined) {\n let body = res.body;\n this._token = body.access_token;\n let renewIn = body.expires_in * 1000 - this._tokenGracePeriod;\n this._tokenTimeout = setTimeout(() => this.login(), renewIn);\n this.info(\"Will get new token again in (%s) mins\", Math.round(renewIn / 1000 / 60));\n }\n }\n async logout() {\n this.info(\"Logging out and clearing timer!\");\n if (this._tokenTimeout !== undefined) {\n clearTimeout(this._tokenTimeout);\n }\n this._token = null;\n return;\n }\n async stop() {\n await this.logout();\n }\n async loggedIn() {\n if (this._token === null) {\n return false;\n }\n return true;\n }\n async sendOutlookMessage(toRecipients, ccRecipients, bccRecipients, fromUser, subject, content, contentType, refCode, attachments) {\n // Just make sure we are logged in first\n if (this._token === null) {\n this.warn(\"Not logged into O365 therefore can't send any mails at the moment!\");\n return false;\n }\n let message = {\n subject,\n body: {\n contentType,\n content,\n },\n };\n // A refCode allows us to fin this message again if we need to\n if (refCode !== undefined) {\n message.singleValueExtendedProperties = [\n {\n id: EMAIL_REF_GUID,\n value: refCode,\n },\n ];\n }\n message.toRecipients = [];\n for (let recipient of toRecipients) {\n message.toRecipients.push({\n emailAddress: {\n address: recipient,\n },\n });\n }\n message.ccRecipients = [];\n for (let recipient of ccRecipients) {\n message.ccRecipients.push({\n emailAddress: {\n address: recipient,\n },\n });\n }\n message.bccRecipients = [];\n for (let recipient of bccRecipients) {\n message.bccRecipients.push({\n emailAddress: {\n address: recipient,\n },\n });\n }\n message.attachments = [];\n if (attachments !== undefined) {\n for (let attachment of attachments) {\n let aObj = {\n \"@odata.type\": \"#microsoft.graph.fileAttachment\",\n name: attachment.name,\n contentType: attachment.contentType,\n contentBytes: attachment.contentB64,\n contentId: \"\",\n isInline: false,\n };\n message.attachments.push(aObj);\n }\n }\n let res = await bs\n .request(this._resource, `/v1.0/users/${fromUser}/sendMail`, {\n method: \"POST\",\n body: { message },\n bearerToken: this._token,\n })\n .catch((e) => {\n this.error(\"Error while sending email (%j) - (%s)\", message, e);\n });\n if (res === undefined || res.statusCode !== 202) {\n return false;\n }\n return true;\n }\n}\n//# sourceMappingURL=main.js.map"],"names":[],"mappings":"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"}