src/Services/CallApiService.php line 24
<?php/** ==============================================================* Autor : Farid Benjomaa* Modified by :* COPYRIGHT (C) 2025, Media-Technologies* ==============================================================*/namespace App\Services;use Symfony\Component\Routing\RouterInterface;use Symfony\Component\HttpFoundation\RedirectResponse;class CallApiService{private $apiUrl;private $domainName;/* @var $router RouterInterface */private $router;public function __construct($apiUrl, $domainName, RouterInterface $router){$this->apiUrl = $apiUrl;$this->httpHost = $domainName;$this->router = $router;}//Authentification Adminpublic function auth(string $login, string $password): array{$endpoint = "auth";$url = "$this->apiUrl" . "$endpoint";$curl = curl_init($url);curl_setopt($curl, CURLOPT_REFERER, $this->httpHost);curl_setopt($curl, CURLOPT_POST, true);curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);$headers = array("Accept: application/json","Content-Type: application/json",);$data = ["login" => $login,"password" => $password];$dataEncoded = json_encode($data);curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);curl_setopt($curl, CURLOPT_POSTFIELDS, $dataEncoded);$response = curl_exec($curl);if ($response === false) {throw new \Exception(curl_error($curl), curl_errno($curl));return ["null" => null];} else {$results = [];if (curl_getinfo($curl, CURLINFO_HTTP_CODE) === 200) {$results = json_decode($response, true);} else if (curl_getinfo($curl, CURLINFO_HTTP_CODE) === 401) {throw $results = new \Exception('identifiant incorecte');} else if (curl_getinfo($curl, CURLINFO_HTTP_CODE) === 404) {$results = ['code' => 404,'message' => $response['message'],];}}curl_close($curl);dd($results);return $results;}//Authentification Adminpublic function postApi($endpoint, array $data): array{$url = "$this->apiUrl" . "$endpoint";$dataEncoded = json_encode($data);$headers = array("Accept: application/json","Content-Type: application/json",);$curl = curl_init($url);curl_setopt($curl, CURLOPT_REFERER, $this->httpHost);curl_setopt($curl, CURLOPT_POST, true);curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);curl_setopt($curl, CURLOPT_POSTFIELDS, $dataEncoded);$response = curl_exec($curl);$curl_http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);$curl_error = curl_error($curl);$curl_errno = curl_errno($curl);curl_close($curl);if ($response === false) {throw new \Exception($curl_error, $curl_errno);return ["null" => null];} else {// if (curl_getinfo($curl, CURLINFO_HTTP_CODE) === 200) {// $results = json_decode($response, true);// } else if (curl_getinfo($curl, CURLINFO_HTTP_CODE) === 401) {// throw $results = new \Exception('identifiant incorecte');// } else if (curl_getinfo($curl, CURLINFO_HTTP_CODE) === 404) {// $response = json_decode($response, true);// $results = $response;// } else if (curl_getinfo($curl, CURLINFO_HTTP_CODE) === 403) {// $response = json_decode($response, true);// $results = $response;// }switch( $curl_http_code ) {case 200:$results = json_decode($response, true);break;case 401: // Accès non autorisé, l'apiKey n'existe pas// a rediriger vers un page d'erreur qui dirait joindre le support, car c'est une erreur qui ne devrait jamais arrivéedie( new RedirectResponse($this->router->generate('app_login')) );//throw $results = new \Exception('identifiant incorrecte');break;case 403:case 404:$response = json_decode($response, true);$results = $response;break;case 409: // Conflit avec le compte ID ou service ID, l'apiKey existe, mais un conflit avec les valeurs configurées// a rediriger vers un page d'erreur qui dirait joindre le support, car c'est une erreur qui ne devrait jamais arrivéedie( new RedirectResponse($this->router->generate('app_login')) );break;case 410: // apiToken n'exite pas ou la date est dépassée, vous devez démarrer une nouvelle sessiondie( new RedirectResponse($this->router->generate('app_login')) );break;default:$response = json_decode($response, true);$results = $response;break;}}// $data = [ 'message' => "Accès non autorisé", 'responseCode' => "401" ]; l'apiKey n'existe pas// $data = [ 'message' => "Conflit avec le référent HTTP", 'responseCode' => "409" ]; l'apiKey existe, mais un conflit avec les valeurs configurées// $data = [ 'message' => "Conflit avec le compte ID", 'responseCode' => "409" ];// $data = [ 'message' => "Conflit avec le service ID", 'responseCode' => "409" ];// $data = [ 'message' => "token n’est plus disponible, vous devez démarrer une nouvelle session", "responseCode" => "410"}]if (empty($results)) {$results = [];}return $results;}public function getApi($endpoint): array{$url = "$this->apiUrl" . "$endpoint";$headers = array("Accept: application/json","Content-Type: application/json",);$curl = curl_init($url);curl_setopt($curl, CURLOPT_REFERER, $this->httpHost);curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);$response = curl_exec($curl);$curl_http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);$curl_error = curl_error($curl);$curl_errno = curl_errno($curl);curl_close($curl);if ($response === false) {throw new \Exception($curl_error, $curl_errno);}$results = json_decode($response, true);if (empty($results)) {$results = [];}return $results;}public function postRefund($url): array{$curl = curl_init($url);curl_setopt($curl, CURLOPT_REFERER, $this->httpHost);curl_setopt($curl, CURLOPT_POST, true);curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);$headers = array("Accept: application/json","Content-Type: application/json",);curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);$response = curl_exec($curl);$curl_http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);$curl_error = curl_error($curl);$curl_errno = curl_errno($curl);curl_close($curl);if ($response === false) {throw new \Exception($curl_error, $curl_errno);return ["null" => null];} else {$results = [];switch( $curl_http_code ) {case 200:$results = json_decode($response, true);break;case 401: // Accès non autorisé, l'apiKey n'existe pas// a rediriger vers un page d'erreur qui dirait joindre le support, car c'est une erreur qui ne devrait jamais arrivéedie( new RedirectResponse($this->router->generate('app_login')) );//throw $results = new \Exception('identifiant incorrecte');break;case 403:case 404:$response = json_decode($response, true);$results = $response;break;case 409: // Conflit avec le compte ID ou service ID, l'apiKey existe, mais un conflit avec les valeurs configurées// a rediriger vers un page d'erreur qui dirait joindre le support, car c'est une erreur qui ne devrait jamais arrivéedie( new RedirectResponse($this->router->generate('app_login')) );break;case 410: // apiToken n'exite pas ou la date est dépassée, vous devez démarrer une nouvelle sessiondie( new RedirectResponse($this->router->generate('app_login')) );break;default:$response = json_decode($response, true);$results = $response;break;}}return $results;}}