1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 | class Helper {
|
7 |
|
8 | public static IO;
|
9 |
|
10 | static pluginHttp;
|
11 | static pluginSendgrid;
|
12 |
|
13 |
|
14 | public static SendMail(to: string, subject: string, body: string) {
|
15 |
|
16 | try {
|
17 | if (!Helper.pluginSendgrid) {
|
18 | var sendgrid = require('sendgrid');
|
19 | if (sendgrid)
|
20 | Helper.pluginSendgrid = sendgrid(process.env.SENDGRID_USERNAME, process.env.SENDGRID_PASSWORD);
|
21 | }
|
22 | }
|
23 | catch (err) { return; }
|
24 |
|
25 | if (!Helper.pluginSendgrid) return;
|
26 |
|
27 |
|
28 | var sendObject = {
|
29 | to: to,
|
30 | from: 'no-reply@jok.io',
|
31 | subject: subject,
|
32 | text: body
|
33 | };
|
34 |
|
35 | var errorSending = (err, json) => {
|
36 | if (err) { return console.error('Sendmail failed', err); }
|
37 | };
|
38 |
|
39 | Helper.pluginSendgrid.send(sendObject, errorSending);
|
40 | }
|
41 |
|
42 | public static HttpGet(url: string, cb, parseJson = false) {
|
43 |
|
44 | try {
|
45 | if (!Helper.pluginHttp) {
|
46 | Helper.pluginHttp = require('http');
|
47 | }
|
48 | }
|
49 | catch (err) { return; }
|
50 |
|
51 | if (!Helper.pluginHttp) return;
|
52 |
|
53 |
|
54 | Helper.pluginHttp.get(url, function (res) {
|
55 |
|
56 | var data = '';
|
57 | res.on('data', function (chunk) {
|
58 | data += chunk;
|
59 | });
|
60 |
|
61 | res.on('end', function () {
|
62 |
|
63 |
|
64 | if (parseJson) {
|
65 | try {
|
66 | var oldData = data;
|
67 | data = JSON.parse(data);
|
68 | }
|
69 | catch (err) {
|
70 |
|
71 | cb && cb(false, err.message, oldData);
|
72 | }
|
73 | }
|
74 |
|
75 | cb && cb(true, data);
|
76 | });
|
77 |
|
78 | }).on('error', function (e) {
|
79 |
|
80 | cb && cb(false, e.message, e);
|
81 | });
|
82 |
|
83 | }
|
84 |
|
85 | public static ChannelSockets(channel: string): any[] {
|
86 |
|
87 | if (!Helper.IO || !Helper.IO.adapter) return;
|
88 |
|
89 | var channelClients = Helper.IO.adapter().clients(channel);
|
90 | var result = [];
|
91 |
|
92 | for (var id in channelClients) {
|
93 |
|
94 | var client_sid = channelClients[id];
|
95 |
|
96 | if (!client_sid) continue;
|
97 |
|
98 | var socket = Helper.IO.clients[client_sid];
|
99 | if (!socket) continue;
|
100 |
|
101 | result.push(socket);
|
102 | }
|
103 |
|
104 | return result;
|
105 | }
|
106 |
|
107 | public static BuildCommand(command: string, ...params: any[]): string {
|
108 | return JSON.stringify({
|
109 | command: command,
|
110 | params: params
|
111 | });
|
112 | }
|
113 | }
|
114 |
|
115 |
|
116 | interface Array {
|
117 | unique(): any[];
|
118 | contains(v): boolean;
|
119 | remove(item: any): boolean;
|
120 | }
|
121 |
|
122 | Array.prototype.unique = function () {
|
123 | var arr = [];
|
124 | for (var i = 0; i < this.length; i++) {
|
125 | if (!arr.contains(this[i])) {
|
126 | arr.push(this[i]);
|
127 | }
|
128 | }
|
129 | return arr;
|
130 | }
|
131 |
|
132 | Array.prototype.contains = function (v) {
|
133 | for (var i = 0; i < this.length; i++) {
|
134 | if (this[i] === v) return true;
|
135 | }
|
136 | return false;
|
137 | };
|
138 |
|
139 | Array.prototype.remove = function (item) {
|
140 |
|
141 | var index = this.indexOf(item);
|
142 | if (index == -1)
|
143 | return false;
|
144 |
|
145 | this.splice(index, 1);
|
146 | return true;
|
147 | }; |
\ | No newline at end of file |