src/Services/CallApiService.php line 27

  1. <?php
  2. /*
  3. * ==============================================================
  4. *     Autor            :  Farid Benjomaa
  5. *     Modified by        :  
  6. *    COPYRIGHT (C) 2025, Media-Technologies
  7. * ==============================================================
  8. */
  9. namespace App\Services;
  10. use Symfony\Component\Routing\RouterInterface;
  11. use Symfony\Component\HttpFoundation\RedirectResponse;
  12. class CallApiService
  13. {
  14.   private $apiUrl;
  15.   private $domainName;
  16.   /* @var $router RouterInterface */
  17.   private $router;
  18.   public function __construct($apiUrl$domainNameRouterInterface $router)
  19.   {
  20.     $this->apiUrl $apiUrl;
  21.     $this->httpHost $domainName;
  22.     $this->router $router;
  23.   }
  24.   //Authentification Admin
  25.   public function auth(string $loginstring $password): array
  26.   {
  27.     $endpoint "auth";
  28.     $url "$this->apiUrl"$endpoint";
  29.     $curl curl_init($url);
  30.     curl_setopt($curlCURLOPT_REFERER$this->httpHost);
  31.     curl_setopt($curlCURLOPT_POSTtrue);
  32.     curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
  33.     curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
  34.     $headers = array(
  35.       "Accept: application/json",
  36.       "Content-Type: application/json",
  37.     );
  38.     $data = [
  39.       "login" => $login,
  40.       "password" => $password
  41.     ];
  42.     $dataEncoded json_encode($data);
  43.     curl_setopt($curlCURLOPT_HTTPHEADER$headers);
  44.     curl_setopt($curlCURLOPT_POSTFIELDS$dataEncoded);
  45.     $response curl_exec($curl);
  46.     if ($response === false) {
  47.       throw new \Exception(curl_error($curl), curl_errno($curl));
  48.       return ["null" => null];
  49.     } else {
  50.       $results = [];
  51.       if (curl_getinfo($curlCURLINFO_HTTP_CODE) === 200) {
  52.         $results json_decode($responsetrue);
  53.       } else if (curl_getinfo($curlCURLINFO_HTTP_CODE) === 401) {
  54.         throw $results =  new \Exception('identifiant incorecte');
  55.       } else if (curl_getinfo($curlCURLINFO_HTTP_CODE) === 404) {
  56.         $results =  [
  57.           'code' => 404,
  58.           'message' => $response['message'],
  59.         ];
  60.       }
  61.     }
  62.     curl_close($curl);
  63.     dd($results);
  64.     return $results;
  65.   }
  66.   //Authentification Admin
  67.   public function postApi($endpoint, array $data): array
  68.   {
  69.     $url "$this->apiUrl"$endpoint";
  70.     
  71.     $dataEncoded json_encode($data);
  72.     $headers = array(
  73.       "Accept: application/json",
  74.       "Content-Type: application/json",
  75.     );
  76.     $curl curl_init($url);
  77.     curl_setopt($curlCURLOPT_REFERER$this->httpHost);
  78.     curl_setopt($curlCURLOPT_POSTtrue);
  79.     curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
  80.     curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
  81.     curl_setopt($curlCURLOPT_HTTPHEADER$headers);
  82.     curl_setopt($curlCURLOPT_POSTFIELDS$dataEncoded);
  83.     $response curl_exec($curl);
  84.     $curl_http_code curl_getinfo($curlCURLINFO_HTTP_CODE);
  85.     $curl_error curl_error($curl);
  86.     $curl_errno curl_errno($curl);
  87.     curl_close($curl);
  88.     if ($response === false) {
  89.       throw new \Exception($curl_error$curl_errno);
  90.       return ["null" => null];
  91.     } else {
  92.       // if (curl_getinfo($curl, CURLINFO_HTTP_CODE) === 200) {
  93.       //   $results = json_decode($response, true);
  94.       // } else if (curl_getinfo($curl, CURLINFO_HTTP_CODE) === 401) {
  95.       //   throw $results =  new \Exception('identifiant incorecte');
  96.       // } else if (curl_getinfo($curl, CURLINFO_HTTP_CODE) === 404) {
  97.       //   $response = json_decode($response, true);
  98.       //   $results =  $response;
  99.       // } else if (curl_getinfo($curl, CURLINFO_HTTP_CODE) === 403) {
  100.       //   $response = json_decode($response, true);
  101.       //   $results = $response;
  102.       // }
  103.       switch( $curl_http_code ) {
  104.         case 200:
  105.           $results json_decode($responsetrue);
  106.           break;
  107.         case 401// Accès non autorisé, l'apiKey n'existe pas
  108.          
  109.           // a rediriger vers un page d'erreur qui dirait joindre le support, car c'est une erreur qui ne devrait jamais arrivée
  110.           die( new RedirectResponse($this->router->generate('app_login')) );
  111.           //throw $results =  new \Exception('identifiant incorrecte');
  112.           break;
  113.         case 403:
  114.         case 404:
  115.           $response json_decode($responsetrue);
  116.           $results =  $response;
  117.           break;
  118.         case 409// Conflit avec le compte ID ou service ID, l'apiKey existe, mais un conflit avec les valeurs configurées
  119.           
  120.           // a rediriger vers un page d'erreur qui dirait joindre le support, car c'est une erreur qui ne devrait jamais arrivée
  121.           die( new RedirectResponse($this->router->generate('app_login')) );
  122.           break;
  123.         case 410// apiToken n'exite pas ou la date est dépassée, vous devez démarrer une nouvelle session
  124.           
  125.           die( new RedirectResponse($this->router->generate('app_login')) );
  126.           break;
  127.         default:
  128.           $response json_decode($responsetrue);
  129.           $results =  $response;
  130.           break;
  131.       }
  132.     }
  133.     // $data = [ 'message' => "Accès non autorisé", 'responseCode' => "401" ];  l'apiKey n'existe pas
  134.     // $data = [ 'message' => "Conflit avec le référent HTTP", 'responseCode' => "409" ]; l'apiKey existe, mais un conflit avec les valeurs configurées
  135.     // $data = [ 'message' => "Conflit avec le compte ID", 'responseCode' => "409" ];
  136.     // $data = [ 'message' => "Conflit avec le service ID", 'responseCode' => "409" ];
  137.     // $data = [ 'message' => "token n’est plus disponible, vous devez démarrer une nouvelle session", "responseCode" => "410"}]
  138.     if (empty($results)) {
  139.       $results = [];
  140.     }
  141.     return $results;
  142.   }
  143.   public function getApi($endpoint): array
  144.   {
  145.     $url "$this->apiUrl"$endpoint";
  146.     
  147.     $headers = array(
  148.       "Accept: application/json",
  149.       "Content-Type: application/json",
  150.     );
  151.     $curl curl_init($url);
  152.     curl_setopt($curlCURLOPT_REFERER$this->httpHost);
  153.     curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
  154.     curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
  155.     curl_setopt($curlCURLOPT_FOLLOWLOCATIONtrue);
  156.     curl_setopt($curlCURLOPT_HTTPHEADER$headers);
  157.     $response curl_exec($curl);
  158.     $curl_http_code curl_getinfo($curlCURLINFO_HTTP_CODE);
  159.     $curl_error curl_error($curl);
  160.     $curl_errno curl_errno($curl);
  161.     curl_close($curl);
  162.     if ($response === false) {
  163.       throw new \Exception($curl_error$curl_errno);
  164.     }
  165.     $results json_decode($responsetrue);
  166.     if (empty($results)) {
  167.       $results = [];
  168.     }
  169.     return $results;
  170.   }
  171.   public function postRefund($url): array
  172.   {
  173.     $curl curl_init($url);
  174.     curl_setopt($curlCURLOPT_REFERER$this->httpHost);
  175.     curl_setopt($curlCURLOPT_POSTtrue);
  176.     curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
  177.     curl_setopt($curlCURLOPT_SSL_VERIFYPEERfalse);
  178.     $headers = array(
  179.       "Accept: application/json",
  180.       "Content-Type: application/json",
  181.     );
  182.     curl_setopt($curlCURLOPT_HTTPHEADER$headers);
  183.     $response curl_exec($curl);
  184.     $curl_http_code curl_getinfo($curlCURLINFO_HTTP_CODE);
  185.     $curl_error curl_error($curl);
  186.     $curl_errno curl_errno($curl);
  187.     curl_close($curl);
  188.     if ($response === false) {
  189.       throw new \Exception($curl_error$curl_errno);
  190.       return ["null" => null];
  191.       
  192.     } else {
  193.       $results = [];
  194.       switch( $curl_http_code ) {
  195.         case 200:
  196.           $results json_decode($responsetrue);
  197.           break;
  198.         case 401// Accès non autorisé, l'apiKey n'existe pas
  199.          
  200.           // a rediriger vers un page d'erreur qui dirait joindre le support, car c'est une erreur qui ne devrait jamais arrivée
  201.           die( new RedirectResponse($this->router->generate('app_login')) );
  202.           //throw $results =  new \Exception('identifiant incorrecte');
  203.           break;
  204.         case 403:
  205.         case 404:
  206.           $response json_decode($responsetrue);
  207.           $results =  $response;
  208.           break;
  209.         case 409// Conflit avec le compte ID ou service ID, l'apiKey existe, mais un conflit avec les valeurs configurées
  210.           
  211.           // a rediriger vers un page d'erreur qui dirait joindre le support, car c'est une erreur qui ne devrait jamais arrivée
  212.           die( new RedirectResponse($this->router->generate('app_login')) );
  213.           break;
  214.         case 410// apiToken n'exite pas ou la date est dépassée, vous devez démarrer une nouvelle session
  215.           
  216.           die( new RedirectResponse($this->router->generate('app_login')) );
  217.           break;
  218.         default:
  219.           $response json_decode($responsetrue);
  220.           $results =  $response;
  221.           break;
  222.       }
  223.     }
  224.     return $results;
  225.   }
  226. }