Select Git revision
requests.js
-
Guillaume Vagner authoredGuillaume Vagner authored
requests.js 5.43 KiB
// REQUESTS.JS : Envoi de requête HTTP vers l'OAuth de VR et vers LinkCS
// Modules extérieurs
const rp = require('request-promise');
// Modules propres
var { modifyChan, getChanByState, addUser } = require('./mysql');
// Configurations
const config = require('./config');
// Fonction d'envoi d'une requête au GraphQL de LinkCS
async function sendRequest(req, chan) {
// A chaque requête vérifie si le token est encore valable, sinon va en récupérer un nouveau
return getNewTokenIfNecessary(chan).then(chan => {
const options = {
headers: { 'Authorization': `Bearer ${chan.token}` },
json: true
}
const url = 'https://gateway.linkcs.fr/v1/graphql';
return rp(`${url}?query=${req}`, options)
})
}
// Récupération de tous les personnes et leurs assos ayant leur anniversaire
function getBirthdays(chan) {
const req = 'query getUsersBirthday {users: usersBirthday { ...userData}}fragment userData on User {firstName lastName login promotion roles {sector {composition {id}}}}'
return sendRequest(req, chan).then(body => {
const users = [];
body.data.users.forEach(user => {
use = {};
use.name = `${user.firstName} ${user.lastName}`;
use.login = user.login;
use.promo = user.promotion;
use.asso = [];
user.roles.forEach(role => {
use.asso.push(role.sector.composition.id);
})
users.push(use);
});
return users;
})
}
// Récupération de la recherche de groupe
function searchGroups(chan, term) {
const req = `query {searchAssociations(term: "${term}") {name code compositions { id label beginningDate}}}`
return sendRequest(req, chan).then(body => {
if (!body.data) return;
return body.data.searchAssociations;
}).catch(err => { console.error(err) })
}
// Récupération du nom de l'asso ayant l'ID donnée
function getGroupById(chan, id) {
const req = `query {association(id: ${id}) {name}}`
return sendRequest(req, chan).then(body => {
if (!body.data) return;
return body.data.association.name;
}).catch(err => { console.error(err) })
}
// Récupération des infos sur une compo (nom, id, asso)
function getCompoGroupById(chan, id) {
const req = `query {composition(id: ${id}) {id label beginningDate association {id name}}}`
return sendRequest(req, chan).then(body => {