Téléchargez-le à partir de https://github.com/Crowdhandler/crowdhandler-php-sdk 
Inclut des exemples d'utilisation.

CrowdHandler PHP SDK

SDK PHP pour interagir avec les API publiques et privées de CrowdHandler. Fonctionnalité étendue pour la vérification et la mise en file d'attente des utilisateurs

Instancier un client d'API publique

$api = new CrowdHandler\PublicClient($yourPublicKey) ;

Instancier un nouvel objet GateKeeper

détails de la requête implicites (PHP classique)

$gatekeeper = new CrowdHandler\GateKeeper($api) ;

La classe GateKeeper est un contrôleur qui interagit avec la demande de l'utilisateur et l'API CrowdHandler et prend les mesures appropriées.

en utilisant la demande PSR7


$request = new \Psr\Http\Message\ServerRequestInterface ;
$gatekeeper = new CrowdHandler\GateKeeper($api, request) ;

D'origine, le GateKeeper inspecte les superglobales pour l'url, l'ip, l'agent, etc. Mais si vous préférez, ou si votre framework préfère, vous pouvez passer une requête PSR.

Options

Mode débogage

$gatekeeper->setDebug(true) ;

Enregistre certaines actions dans le journal des erreurs PHP et ignore les redirections afin que vous puissiez voir ce qui se passe sans être constamment redirigé. Inspecter $gatekeeper->getRedirectUrl() pour voir où vous serez redirigé.

Ignorer les Urls

$gatekeeper->setIgnoreUrls($regexp) ;

Par défaut, les ressources communes (png, jpg, etc.) sont exclues des vérifications de l'API et bénéficient d'une promotion automatique. Si vous le souhaitez, vous pouvez transmettre votre propre expression régulière. Celle-ci remplacera la RegExp existante, vous devrez donc incorporer des actifs si nécessaire.

Salle d'attente de basculement

$gatekeeper->setSafetyNetSlug('yourslug') ;

Par défaut, si un appel API échoue, ou si une réponse malformée est reçue, vous serez redirigé vers la salle d'attente ultime de CrowdHandler jusqu'à ce que l'API réponde avec plus d'informations. Si vous préférez rediriger vers votre propre salle d'attente connue dans ces circonstances (recommandé), vous pouvez définir le slug ici.

Suivez votre propre voie

$gatekeeper->setToken($_SESSION['token']) ;

Par défaut GateKeeper inspectera et définira les cookies pour conserver la session des utilisateurs avec CrowdHandler sur votre site. Si vous souhaitez gérer la session d'une autre manière, vous pouvez définir le jeton vous-même.

La détection de l'IP ne fonctionne pas correctement ? Réglez-le vous-même

$gatekeeper->setIP($_SERVER['X-MY-WEIRD-LOADBALANCER-FORWARDS-THE-REAL-IP-LIKE-THIS']) ;

Suivre l'IP de l'utilisateur devrait être une chose simple, mais dans les environnements à équilibrage de charge ou d'hébergement en nuage, vous obtiendrez parfois l'IP de l'équilibreur de charge au lieu de l'IP de l'utilisateur. GateKeeper essaie des modèles communs pour détecter l'IP, y compris des modèles communs d'équilibreurs de charge, mais vous pouvez surpasser ce qu'il détecte en le définissant explicitement si votre configuration est plus exotique. Il est important de suivre l'IP avec précision. Si le même utilisateur est suivi via deux IP, il peut être bloqué par erreur, ou simultanément bloqué et non bloqué, selon qu'il est en attente ou en transaction.

Vérifier la demande en cours

$gatekeeper->checkRequest() ;

C'est le cœur de la classe. Elle examine la demande de l'utilisateur, se connecte à l'API et récupère un résultat qui indique si l'utilisateur doit être autorisé à accéder au site ou s'il doit être envoyé dans une salle d'attente.

Définir le cookie

Automatique

$gatekeeper->setCookie() ;

Vous devez maintenant définir le cookie de manière à ce que l'utilisateur conserve son jeton à chaque demande. C'est important, car si le jeton ne peut pas être vérifié, un nouveau jeton sera émis, ce qui peut avoir pour conséquence d'envoyer l'utilisateur promu dans une salle d'attente.

Suivez votre propre voie

$_SESSION['ch-id'] = $gatekeeper->result->token ;

Si vous ne souhaitez pas utiliser le cookie standard, vous pouvez le faire vous-même. NB : nous ne recommandons pas vraiment d'utiliser la session PHP pour stocker le jeton, car elle se termine généralement au bout de 20 minutes. Un utilisateur peut se trouver dans une salle d'attente pendant des heures et essayer ensuite de cliquer sur une url de votre site dans un nouvel onglet, ce qui pourrait vous amener à lui attribuer une nouvelle position à la fin de la file d'attente. C'est pourquoi il est généralement préférable d'utiliser un cookie de session ou permanent.

Rediriger l'utilisateur s'il doit attendre

Automatique

$gatekeeper->redirectIfNotPromoted()

Si cet utilisateur doit attendre, il sera envoyé dans la bonne salle d'attente. Il n'est pas nécessaire de procéder à une vérification conditionnelle.

Faites-le vous-même

if (!$gatekeeper->result->promoted) {
    header('location: '.$gatekeeper->getRedirectUrl(), 302);
    exit;    
}

Si vous souhaitez effectuer un contrôle conditionnel, voici le contrôle que vous devez effectuer et comment vous pouvez trouver l'URL vers laquelle les rediriger.

Instancier un client API privé

$api = new CrowdHandler\PrivateClient($yourPrivateKey) ;

Récupérer un tableau d'objets

Tous

$rs = $api->rooms->get() ;

Avec des paramètres

$rs = $api->rooms->get(['domainID'=>'dom_y0urk3y']) ;

Itérer

foreach($rs as $room) print $room ;

Récupérer un objet

$room = $api->rooms->get('room_your1d') ;

Mise à jour d'un objet

$api->domaines->put('dom_y0ur1d', ['rate'=>50, 'autotune'=>true]) ;

Poster un objet

$api->templates->post(['name'=>'My Template', 'url'=>'https://mysite.com/wait.html']) ;

Supprimer un objet

$api->groups->delete('grp_y0ur1d')

Plus d'informations

Base de connaissances et API

https://www.crowdhandler.com

courriel

support@crowdhandler.com