Class PHP Jestyc

Cliquez sur l'icône en haut à droite du code pour le sélectionner et le copier.

<?php
/**
 * Jestyc API class
 * https://jestyc.com/api/example-php
 */

class JestycApi
{
    private $data;
    private $url;
    private $httpCode;
    private $response;
    
    /**
     * Constructeur
     * @param array  	$data	Tableau des données de la requête
     * @param string  	$url 	URL complète de l'API
     */
    public function __construct($data, $url)
    {
        $this->data = $data;
        $this->url = $url;
    }
    
    /**
     * Exécute la requête et enregistre le code HTTP dans $httpCode
     * et le résultat dans $response (array)
     */
    public function execute()
    {
        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $this->url);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($this->data));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        $json = curl_exec($ch);
        
        $this->httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

        curl_close($ch);
        
        $this->response = json_decode($json, true);
    }
    
    /**
     * Renvoie True si la requête a été traitée par le serveur
     * et si le serveur n'a renvoyé aucune erreur
     * @return bool
     */
    public function success()
    {
        return $this->httpCode == 200 && !empty($this->response) && empty($this->response['error']);
    }
    
    /**
     * Renvoie $response
     * @return array
     */
    public function getResponse()
    {
        return $this->response;
    }
    
    /**
     * Renvoie une donnée de $response en fonction d'une clé
     * @param string  	$key 	Clé du tableau
     * @return string / array
     */
    public function getResponseValue($key)
    {
        return $this->response[$key] ?? '';
    }
    
    /**
     * Renvoie le nombre d'éléments de $response
     * @return int
     */
    public function countResponse()
    {
        return is_array($this->response) ? count($this->response) : 0;
    }
    
    /**
     * Renvoie différentes données pour débogage
     * @return string
     */
    public function debug()
    {
        return '<table style="white-space:pre"><tr><td>$data</td><td>'.print_r($this->data, true).'</td></tr><tr><td>$url</td><td>'.$this->url.'</td></tr><tr><td>$httpCode</td><td>'.$this->httpCode.'</td></tr><tr><td>$response</td><td>'.print_r($this->response, true).'</td></tr></table>';
    }
}