diff --git a/index.js b/index.js index 1069383c11f8fd37f415c67439ade65a4bec3def..c1d3d05493345660aa7ab73eaa7fed34e46fd81b 100644 --- a/index.js +++ b/index.js @@ -1,40 +1,5 @@ const bot = require('./telegram'); const app = require('./website'); const mongoose = require('./mongoose'); +const { sendRequest, getBirthdays } = require('./requests'); const Token = require('./models/Token'); - -const rp = require('request-promise'); - -function sendRequest(req, token, callback) { - const options = { - headers: { 'Authorization': `Bearer ${token}` }, - json: true - } - const url = 'https://gateway.linkcs.fr/v1/graphql'; - - - return rp(`${url}?query=${req}`, options) -} - - -function getBirthdays(token) { - req = 'query getUsersBirthday {users: usersBirthday { ...userData}}fragment userData on User {id firstName lastName roles {sector {composition {association {id}}}}}' - return sendRequest(req, token).then(body => { - const users = []; - body.data.users.forEach(user => { - use = {}; - use.name = `${user.firstName} ${user.lastName}`; - use.asso = []; - user.roles.forEach(role => { - use.asso.push(role.sector.composition.association.id); - }) - users.push(use); - }); - return users; - }) - -} - -// Token.findOne({ expiration: { $gt: Date.now() } }).then(token => { -// getBirthdays(token.token).then(a => console.log(a)); -// }) \ No newline at end of file diff --git a/requests.js b/requests.js new file mode 100644 index 0000000000000000000000000000000000000000..729b2cd476f377e1d655ae9f6382ee30159ccd7f --- /dev/null +++ b/requests.js @@ -0,0 +1,34 @@ +const rp = require('request-promise'); + +const Token = require('./models/Token'); + + +function sendRequest(req, token, callback) { + const options = { + headers: { 'Authorization': `Bearer ${token}` }, + json: true + } + const url = 'https://gateway.linkcs.fr/v1/graphql'; + + return rp(`${url}?query=${req}`, options) +} + + +function getBirthdays(token) { + req = 'query getUsersBirthday {users: usersBirthday { ...userData}}fragment userData on User {id firstName lastName roles {sector {composition {association {id}}}}}' + return sendRequest(req, token).then(body => { + const users = []; + body.data.users.forEach(user => { + use = {}; + use.name = `${user.firstName} ${user.lastName}`; + use.asso = []; + user.roles.forEach(role => { + use.asso.push(role.sector.composition.association.id); + }) + users.push(use); + }); + return users; + }) +} + +module.exports = { getBirthdays, sendRequest }; \ No newline at end of file diff --git a/telegram.js b/telegram.js index a0450dd03ee7017b0b2ee4f54e2f35e38f2b0406..4ca200831d6501e55703e5d3af9f82fb952b4ca7 100644 --- a/telegram.js +++ b/telegram.js @@ -3,6 +3,7 @@ const TelegramBot = require('node-telegram-bot-api'); const Token = require('./models/Token'); const config = require('./config'); +const { sendRequest, getBirthdays } = require('./requests'); const bot = new TelegramBot(config.telegram.token, { polling: true }); @@ -53,4 +54,20 @@ bot.onText(/\/disconnect/, (msg, _) => { }) }); +bot.onText(/\/birthdays/, (msg, _) => { + const chatId = msg.chat.id; + Token.findOne({ + chatId: chatId, + expiration: { $gt: Date.now() } + }).then(token => { + return getBirthdays(token.token) + }).then(users => { + var msg = 'Joyeux anniversaire à :\n' + users.forEach(user => { + msg += `${user.name}\n` + }); + bot.sendMessage(chatId, msg); + }) +}); + module.exports = bot; \ No newline at end of file