Skip to content
Snippets Groups Projects
Select Git revision
  • master default
  • add-mongoose
  • add-website
  • add-bot
4 results

requests.js

Blame
  • 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 => {