Ajout des mecanismes d'enqueue pour les webhooks

This commit is contained in:
OsaAjani 2016-01-21 01:50:15 +01:00
parent 7c78832fe1
commit 9f5e143356
3 changed files with 57 additions and 3 deletions

View file

@ -179,6 +179,15 @@
//On va liée les deux commandes pour envoyer le SMS puis le passer en echec
$commande = '(' . $commande_send_sms . ') >/dev/null 2>/dev/null &';
exec($commande); //On execute la commande d'envoie d'un SMS
$datas = array(
'number' => $number,
'text' => $scheduled['content'],
'flash' => $scheduled['flash'],
);
$webhooks = new webhooks();
$webhooks->_addWebhooksForType(internalConstants::WEBHOOK_TYPE['SEND_SMS'], $datas);
}
}
@ -348,13 +357,24 @@
$send_by = $number;
$content = $text;
$is_command = count($found_commands);
if (!$db->insertIntoTable('receiveds', ['at' => $date, 'send_by' => $send_by, 'content' => $content, 'is_command' => $is_command]))
$received = array(
'at' => $date,
'send_by' => $send_by,
'content' => $content,
'is_command' => $is_command,
);
if (!$db->insertIntoTable('receiveds', $received))
{
echo "Erreur lors de l'enregistrement du SMS\n";
$this->wlog('Unable to process the SMS in file "' . $dir);
die(7);
}
$webhooks = new webhooks();
$webhooks->_addWebhooksForType(internalConstants::WEBHOOK_TYPE['RECEIVE_SMS'], $received);
//On insert le SMS dans le tableau des sms à envoyer par mail
$db->insertIntoTable('transfers', ['id_received' => $db->lastId(), 'progress' => false]);

View file

@ -145,14 +145,39 @@
header('Location: ' . $this->generateUrl('webhooks'));
}
/**
* Cette méthode permet d'ajouter d'un coup toutes les requête d'un webhook à la queue des requête pour un type de webhook
* @param int $webhookType : Le type de webhook (une constante issue de internalConstants::WEBHOOK_TYPE)
* @param array $datas : Les données à envoyer avec la requête (si non définie, [])
* @return void
*/
public function _addWebhooksForType ($webhookType, $datas = [])
{
global $db;
$webhooks = $db->getFromTableWhere('webhooks', ['type' => $webhookType]);
foreach ($webhooks as $webhook)
{
$this->addWebhookQuery($webhook['url'], $datas);
}
}
/**
* Cette méthode est appelée pour ajouter une requête issue d'un webhook à la queue
* @param string $url : L'url à laquelle envoyer la requête
* @param array $datas : Les données à envoyer avec la requête (si non définie, [])
* @return boolean : true si on reussi à l'ajouter, false sinon
*/
public function _enqueueQuery ($url, $datas = [])
private function addWebhookQuery ($url, $datas = [])
{
global $db;
if (!$db->insertIntoTable('webhook_queries', ['url' => $url, ['datas' => json_encode($datas)]]))
{
return false;
}
return true;
}
}

View file

@ -156,6 +156,15 @@ CREATE TABLE IF NOT EXISTS webhooks
PRIMARY KEY (id)
);
CREATE TABLE IF NOT EXISTS webhook_queries
(
id INT NOT NULL AUTO_INCREMENT,
url VARCHAR(250) NOT NULL,
datas VARCHAR(10000) NOT NULL,
progress BOOLEAN NOT NULL DEFAULT FALSE,
PRIMARY KEY (id)
);
#On insert les données par défaut dans les settings
INSERT INTO settings (name, value)
VALUES ('transfer', '1'),