<commit_before>var async        = require('async');
var request      = require('request');
var ovh          = require('./ovhApi');
var mailer       = require('./mailer');
var pushbullet   = require('./pushbulletApi.js');
var requestModel = require('../models/requests');

/*
 *  Traitement de l'ensemble des demandes en attente
 *  Route : /cron/handleRequests/:secureKey
 *  Methode : GET
 */
exports.handleRequests = function( req, res, next ) {

    checkSecureKey(req, res, req.params.secureKey, function() {
        requestModel.getPendingRequests(next, function( pendingRequests ) {
            ovh.getJson(next, function( json ) {

                async.each(pendingRequests, function( request, nextRequest ) {
                    ovh.checkOffer(json, request.reference, request.zone, next, function( available ) {

                        if( available ) {

                            console.log(request.name + " is available");
                            inform( res, request, next );

                        }

                        nextRequest();

                    });

                }, function( err ) {

                    if( err ) {
                        next( err );
                        return;
                    } else {
                        res.send('PROCESSING REQUESTS COMPLETED !');
                    }

                });

            });
        });
    });

};

/*
 *  Permet d'informer l'utilisateur par mail et par SMS de la disponibilité d'une offre d'OVH
 */
var inform = function( res, request, next ) {

    var orderUrl = ''

    switch( request.type ) {
        case 'sys':
            orderUrl = 'https://eu.soyoustart.com/fr/commande/soYouStart.xml?reference=' + request.reference
            break;
        case 'kimsufi':
            orderUrl = 'https://www.kimsufi.com/fr/commande/kimsufi.xml?reference=' + request.reference
            break;
    }

    var payload = {
        to:request.mail,
        from:'<EMAIL>',
        subject:'[ovh-availability] Votre serveur est disponible ( ' + request.name + ' )',
        html:"<p>Bonjour,</p> \
              <p>Le serveur " + request.name + " est disponible.</p> \
              <p>Pour le réserver, cliquez sur le lien ci-dessous :</p> \
              <a href='" + orderUrl + "'>Commander</a> \
              <p>Si vous avez raté l'offre, vous pouvez toujours réactiver votre demande en cliquant sur ce lien :</p> \
              <a href='" + process.env.APP_URL + "request/reactivate/" + request.token + "'>Réactiver ma demande</a> \
              <p>A très bientôt sur ovh-availability</p>"
    };

    // Envoi du mail de notification
    mailer.send( payload, next );

    // if( request.phone )
    // Envoi du sms de notification
    // ovh.sendSms( res, request.name, request.phone, next );

    if( request.pushbullet_token )
        // Envoi de la notification à Pushbullet
        pushbullet.sendNotification( request.pushbullet_token, request.name, orderUrl );<commit_msg>Correction de l'url pour les serveurs de jeu<commit_after>var S            = require('string');
var async        = require('async');
var request      = require('request');
var ovh          = require('./ovhApi');
var mailer       = require('./mailer');
var pushbullet   = require('./pushbulletApi.js');
var requestModel = require('../models/requests');

/*
 *  Traitement de l'ensemble des demandes en attente
 *  Route : /cron/handleRequests/:secureKey
 *  Methode : GET
 */
exports.handleRequests = function( req, res, next ) {

    checkSecureKey(req, res, req.params.secureKey, function() {
        requestModel.getPendingRequests(next, function( pendingRequests ) {
            ovh.getJson(next, function( json ) {

                async.each(pendingRequests, function( request, nextRequest ) {
                    ovh.checkOffer(json, request.reference, request.zone, next, function( available ) {

                        if( available ) {

                            console.log(request.name + " is available");
                            inform( res, request, next );

                        }

                        nextRequest();

                    });

                }, function( err ) {

                    if( err ) {
                        next( err );
                        return;
                    } else {
                        res.send('PROCESSING REQUESTS COMPLETED !');
                    }

                });

            });
        });
    });

};

/*
 *  Permet d'informer l'utilisateur par mail et par SMS de la disponibilité d'une offre d'OVH
 */
var inform = function( res, request, next ) {

    var orderUrl = ''

    switch( request.type ) {
        case 'sys':
            if( S( request.reference ).contains('game') )
                orderUrl = 'https://eu.soyoustart.com/fr/cgi-bin/newOrder/order.cgi?hard=' + request.reference
            else
                orderUrl = 'https://eu.soyoustart.com/fr/commande/soYouStart.xml?reference=' + request.reference
            break;
        case 'kimsufi':
            orderUrl = 'https://www.kimsufi.com/fr/commande/kimsufi.xml?reference=' + request.reference
            break;
    }

    var payload = {
        to:request.mail,
        from:'<EMAIL>',
        subject:'[ovh-availability] Votre serveur est disponible ( ' + request.name + ' )',
        html:"<p>Bonjour,</p> \
              <p>Le serveur " + request.name + " est disponible.</p> \
              <p>Pour le réserver, cliquez sur le lien ci-dessous :</p> \
              <a href='" + orderUrl + "'>Commander</a> \
              <p>Si vous avez raté l'offre, vous pouvez toujours réactiver votre demande en cliquant sur ce lien :</p> \
              <a href='" + process.env.APP_URL + "request/reactivate/" + request.token + "'>Réactiver ma demande</a> \
              <p>A très bientôt sur ovh-availability</p>"
    };

    // Envoi du mail de notification
    mailer.send( payload, next );

    // if( request.phone )
    // Envoi du sms de notification
    // ovh.sendSms( res, request.name, request.phone, next );

    if( request.pushbullet_token )
        // Envoi de la notification à Pushbullet
        pushbullet.sendNotification( request.pushbullet_token, request.name, orderUrl );
{'fraction_non_alphanumeric': 0.1264992803454342, 'fraction_numerical': 0.0, 'mean_word_length': 1.763588157313301, 'pattern_counts': {'":': 0, '<': 33, '<?xml version=': 0, '>': 33, 'https://': 5, 'lorem ipsum': 0, 'www.': 2, 'xml': 4}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5646483', 'n_tokens_mistral': 1839, 'n_tokens_neox': 1774, 'n_words': 422}