Descárguelo de https://github.com/Crowdhandler/crowdhandler-php-sdk Incluye ejemplos de uso.
SDK PHP de CrowdHandler
PHP SDK para interactuar con las API públicas y privadas de CrowdHandler. Amplia funcionalidad para comprobar y poner en cola a los usuarios.
Instanciar un cliente de API pública
$api = new CrowdHandler\PublicClient($yourPublicKey);
Instanciar un nuevo objeto GateKeeper
detalles implícitos de la solicitud (PHP clásico)
$gatekeeper = nuevo CrowdHandler\GateKeeper($api);
La clase GateKeeper es un controlador para interactuar con la solicitud del usuario y la API CrowdHandler y tomar las medidas oportunas.
utilizando la solicitud PSR7
$request = new \Psr\Http\Message\ServerRequestInterface;
$gatekeeper = new CrowdHandler\GateKeeper($api, request);
Fuera de la caja, el GateKeeper inspecciona superglobals para url, ip, agente, etc. Pero si lo prefieres, o tu framework lo prefiere, puedes pasar una petición PSR.
Opciones
Modo depuración
$gatekeeper->setDebug(true);
Registrará algunas acciones en el registro de errores de PHP, y también omitirá redirecciones para que pueda ver lo que está pasando sin ser redirigido constantemente. Inspeccionar $gatekeeper->getRedirectUrl()
para ver a dónde se le redirige.
Ignorar Urls
$gatekeeper->setIgnoreUrls($regexp);
Por defecto, los activos comunes (png jpg etc) serán excluidos de las comprobaciones de la API, recibiendo una promoción automática. Si lo desea, puede pasar su propia expresión regular. Esto anulará la RegExp existente, por lo que tendrá que incorporar activos si es necesario.
Sala de espera
$gatekeeper->setSafetyNetSlug('yourslug');
Por defecto, si una llamada a la API falla, o se recibe una respuesta malformada, se le redirigirá a la sala de espera de CrowdHandler hasta que la API responda con más información. Si prefiere redirigirle a su propia sala de espera en estas circunstancias (recomendado), puede configurar el slug aquí.
Sigue tu camino
$gatekeeper->setToken($_SESSION['token']);
Por defecto GateKeeper inspeccionará y establecerá cookies para retener la sesión de los usuarios con CrowdHandler en su sitio. Si desea gestionar la sesión de otra manera, puede configurar el token usted mismo.
¿Se equivoca con la detección de IP? Configúrelo usted mismo
$gatekeeper->setIP($_SERVER['X-MY-WEIRD-LOADBALANCER-FORWARDS-THE-REAL-IP-LIKE-THIS']);
Rastrear la IP del usuario debería ser algo sencillo, pero en entornos con balanceo de carga o alojamiento en la nube, a veces obtendrás la IP del balanceador de carga en lugar de la IP del usuario. GateKeeper intenta patrones comunes para detectar la IP, incluyendo patrones comunes del balanceador de carga, pero puedes omitir lo que detecta configurando explícitamente si tu configuración es más exótica. Es importante rastrear la IP con precisión. Si el mismo usuario es rastreado a través de dos IPs podría ser bloqueado erróneamente, o simultáneamente bloqueado y no bloqueado, dependiendo de si está esperando o realizando una transacción.
Comprobar la solicitud actual
$gatekeeper->checkRequest();
Este es el corazón de la clase. Examina la solicitud del usuario, realiza comprobaciones con la API y obtiene un resultado que indica si se debe conceder acceso al usuario o enviarlo a una sala de espera.
Establecer la cookie
Automático
$gatekeeper->setCookie();
Ahora se configura la cookie para que el usuario lleve su token con cada solicitud. Esto es importante, si no se puede comprobar el token, se emitirá uno nuevo, y esto puede provocar que un usuario promocionado sea enviado a una sala de espera.
Sigue tu camino
$_SESSION['ch-id'] = $gatekeeper->result->token;
Si no desea utilizar la cookie estándar, puede hacerlo por su cuenta. NB, realmente no recomendamos el uso de la sesión de PHP para almacenar el token, ya que normalmente se agota después de 20 minutos. Un usuario puede estar en una sala de espera durante horas y luego tratar de golpear una url en su sitio en una nueva pestaña, lo que podría dar lugar a la emisión de ellos con una nueva posición en la parte posterior de la cola. Por esta razón es preferible una cookie de sesión o permanente.
Redirigir al usuario si debe esperar
Automático
$gatekeeper->redirectIfNotPromoted()
Si este usuario debe estar esperando, se le enviará a la sala de espera correcta. No es necesario que haga una comprobación condicional.
Hazlo tú mismo
if (!$gatekeeper->result->promoted) {
header('location: '.$gatekeeper->getRedirectUrl(), 302);
exit;
}
Si quieres hacer una comprobación condicional, esta es la comprobación que debes hacer, y cómo puedes encontrar la URL a la que redirigirlos.
Instanciar un cliente API privado
$api = new CrowdHandler\PrivateClient($yourPrivateKey);
Obtener una matriz de objetos
Todos
$rs = $api->habitaciones->get();
Con parámetros
$rs = $api->rooms->get(['domainID'=>'dom_y0urk3y']);
Iterar
foreach($rs as $habitación) print $habitación;
Obtener un objeto
$room = $api->rooms->get('room_your1d');
Actualizar un objeto
$api->domains->put('dom_y0ur1d', ['rate'=>50, 'autotune'=>true]);
Publicar un objeto
$api->templates->post(['name'=>'Mi Plantilla', 'url'=>'https://mysite.com/wait.html']);
Borrar un objeto
$api->groups->delete('grp_y0ur1d')