Skip to content

Commit

Permalink
Merge pull request #22 from studoo-app/develop
Browse files Browse the repository at this point in the history
v0.1.1
  • Loading branch information
bfoujols authored Mar 27, 2023
2 parents bf53a71 + 247ec06 commit 246389c
Show file tree
Hide file tree
Showing 16 changed files with 444 additions and 58 deletions.
313 changes: 313 additions & 0 deletions clover.xml

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
"start": [ "Composer\\Config::disableProcessTimeout",
"php -S localhost:8042 -t examples"
],
"test": "php vendor/bin/phpunit --testdox tests",
"test": "php vendor/bin/phpunit --testdox tests --coverage-clover clover.xml",
"docker-start": "docker compose up -d",
"docker-stop": "docker compose down"
}
Expand Down
20 changes: 13 additions & 7 deletions src/Client.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@

namespace Studoo\Api\EcoleDirecte;

use GuzzleHttp\Exception\GuzzleException;
use Studoo\Api\EcoleDirecte\Entity\Login;
use Studoo\Api\EcoleDirecte\Exception\InvalidModelException;
use Studoo\Api\EcoleDirecte\Query\RunQuery;

/**
Expand All @@ -27,8 +27,16 @@ class Client

private const API_VERSION = 'v3';

private array $config = [];
/**
* Configuration de l'API
* @var array
*/
private array $config;

/**
* Objet Login contenant les informations de connexion et de l'utilisateur
* @var Login
*/
private Login $login;


Expand All @@ -50,13 +58,13 @@ public function __construct(array $config = [])
],
], $config);
}
//end __construct()

/**
* Accès à l'API EcoleDirecte avec les identifiants de l'utilisateur
* Retourne un objet Login
* @return object
* @throws \GuzzleHttp\Exception\GuzzleException
* @throws \JsonException
* @throws InvalidModelException
*/
public function fetchAccessToken(): object
{
Expand All @@ -73,8 +81,7 @@ public function fetchAccessToken(): object
* Retourne les informations de l'utilisateur sur sa vie scolaire
* @param int $idEtudiant Identifiant de l'étudiant
* @return object
* @throws GuzzleException
* @throws \JsonException
* @throws InvalidModelException
*/
public function getVieScolaire(int $idEtudiant): object
{
Expand All @@ -99,5 +106,4 @@ public function getLibVerion(): string
{
return self::LIBVER;
}

}
11 changes: 5 additions & 6 deletions src/Core/BuildEntiy.php → src/Core/BuildEntity.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,24 +15,23 @@
* Traitement d'une entité
* @package Studoo\Api\EcoleDirecte\Core
*/
trait BuildEntiy
class BuildEntity
{
/**
* Rempli l'entité avec les données d'un tableau
* @param object $entity
* @param array $data
* @param object $entity Classe de l'entité
* @param array $data Tableau de correspondance entre les données et les méthodes
* @return object
*/
public static function hasPacked(object $entity, array $data): object
{
foreach ($data as $key => $value) {
$method = 'set' . ucfirst($key);
if (method_exists($entity, $method)) {
$method = "set" . ucfirst($key);
if (method_exists($entity, $method) === true) {
$entity->$method($value);
}
}

return $entity;
}

}
8 changes: 6 additions & 2 deletions src/Entity/Login.php
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,15 @@ class Login
private string $email;

/**
* Nom et Prenom de l'utilisateur
* Nom et de l'utilisateur
* @var string
*/
private string $nom;

/**
* Prenom de l'utilisateur
* @var string
*/
private string $prenom;

/**
Expand All @@ -83,7 +88,6 @@ class Login
*/
private array $profile;


public function getToken(): string
{
return $this->token;
Expand Down
1 change: 0 additions & 1 deletion src/Entity/Viescolaire.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ class Viescolaire
*/
private array $parametrage;


/**
* Retourne la liste des absences et retards
* @return array
Expand Down
17 changes: 17 additions & 0 deletions src/Exception/ErrorHttpStatusException.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?php
/*
* Ce fichier fait partie du Studoo
*
* @author Benoit Foujols
*
* Pour les informations complètes sur les droits d'auteur et la licence,
* veuillez consulter le fichier LICENSE qui a été distribué avec ce code source.
*/


namespace Studoo\Api\EcoleDirecte\Exception;

class ErrorHttpStatusException extends \Exception
{
protected $message = "Erreur HTTP status";
}
17 changes: 17 additions & 0 deletions src/Exception/InvalidModelException.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?php
/*
* Ce fichier fait partie du Studoo
*
* @author Benoit Foujols
*
* Pour les informations complètes sur les droits d'auteur et la licence,
* veuillez consulter le fichier LICENSE qui a été distribué avec ce code source.
*/


namespace Studoo\Api\EcoleDirecte\Exception;

class InvalidModelException extends \Exception
{
protected $message = "Invalid model API";
}
17 changes: 17 additions & 0 deletions src/Exception/NotDataResponseException.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?php
/*
* Ce fichier fait partie du Studoo
*
* @author Benoit Foujols
*
* Pour les informations complètes sur les droits d'auteur et la licence,
* veuillez consulter le fichier LICENSE qui a été distribué avec ce code source.
*/


namespace Studoo\Api\EcoleDirecte\Exception;

class NotDataResponseException extends \Exception
{
protected $message = "Pas de donnée dans la réponse";
}
10 changes: 5 additions & 5 deletions src/Query/DispacherQuery.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@

namespace Studoo\Api\EcoleDirecte\Query;

use Studoo\Api\EcoleDirecte\Exception\InvalidModelException;

/**
* Cette classe permet de dispatcher les requêtes
* @package Studoo\Api\EcoleDirecte\Query
Expand All @@ -20,7 +22,7 @@ trait DispacherQuery
* Permet de dispatcher les requêtes et de retourner l'objet
* @param string $model Nom du model de l'api
* @return object Retourne l'objet de la requête
* @throws \Exception
* @throws InvalidModelException
*/
public function dispacherForModel(string $model) : object
{
Expand All @@ -30,10 +32,8 @@ public function dispacherForModel(string $model) : object
];

if (array_key_exists($model, $api)) {
return new $api[$model];
} else {
// TODO Personnaliser Exception
throw new \Exception("Model not found");
return new $api[$model]();
}
throw new InvalidModelException();
}
}
9 changes: 5 additions & 4 deletions src/Query/LoginQuery.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@

namespace Studoo\Api\EcoleDirecte\Query;

use Exception;
use Studoo\Api\EcoleDirecte\Core\BuildEntity;
use Studoo\Api\EcoleDirecte\Entity\Login;
use Studoo\Api\EcoleDirecte\Exception\NotDataResponseException;

/**
* Traitement de la requête de connexion par requête API EcoleDirecte
Expand All @@ -33,17 +34,17 @@ public function __construct()
* Retourne l'entité de la requête API
* @param array $data
* @return object
* @throws NotDataResponseException
*/
public function buildEntity(array $data): object
{
$login = new Login();
$login->setToken($data['token']);

if (isset($data['data']['accounts'][0]) === true) {
self::hasPacked($login, $data['data']['accounts'][0]);
BuildEntity::hasPacked($login, $data['data']['accounts'][0]);
} else {
// TODO: Throw an exception
throw new Exception('Aucune donnée n\'a été trouvée');
throw new NotDataResponseException();
}

return $login;
Expand Down
12 changes: 4 additions & 8 deletions src/Query/Query.php
Original file line number Diff line number Diff line change
@@ -1,23 +1,19 @@
<?php
/*
* Ce fichier fait partie du ecole-directe-api.
* Ce fichier fait partie du Studoo.
*
* (c) redbull
* (c) Benoit Foujols
*
* Pour les informations complètes sur les droits d'auteur et la licence,
* veuillez consulter le fichier LICENSE qui a été distribué avec ce code source.
*/


namespace Studoo\Api\EcoleDirecte\Query;

use Psr\Http\Message\ResponseInterface;
use Studoo\Api\EcoleDirecte\Core\BuildEntiy;

class Query
{
use BuildEntiy;

protected string $methode;

protected string $path;
Expand Down Expand Up @@ -48,13 +44,13 @@ public function getPath(): string
public function setParamToPath(array $pathID): Query
{
foreach ($pathID as $search => $replace) {
$this->path = str_replace("<{$search}>", $replace, $this->path);
$this->path = str_replace("<$search>", $replace, $this->path);
}
return $this;
}

/**
* retourne les paramètres de la requête
* Retourne les paramètres de la requête
* @return array
*/
public function getQuery(): array
Expand Down
16 changes: 9 additions & 7 deletions src/Query/RunQuery.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@

namespace Studoo\Api\EcoleDirecte\Query;

use Exception;
use GuzzleHttp\Exception\GuzzleException;
use JsonException;
use Psr\Http\Message\ResponseInterface;
use Studoo\Api\EcoleDirecte\Exception\ErrorHttpStatusException;
use Studoo\Api\EcoleDirecte\Exception\InvalidModelException;
use Studoo\Api\EcoleDirecte\Service\Request;

/**
Expand All @@ -34,12 +35,11 @@ class RunQuery
* BuildQuery constructor.
* @param string $model Nom d'appel API
* @param array $config Configuration de l'API
* @throws Exception
* @throws InvalidModelException
*/
public function __construct(string $model, array $config)
{
$finalModel = $this->dispacherForModel($model);
// TODO Mettre un try catch pour la gestion d'erreur
$this->apiModel = new $finalModel();
$this->config = $config;
}
Expand All @@ -52,17 +52,19 @@ public function __construct(string $model, array $config)
* @return object
* @throws GuzzleException
* @throws JsonException
* @throws ErrorHttpStatusException
*/
public function run(
array $body = [],
array $headers = [
'Content-Type' => 'text/plain',
],
array $param = []
): object
{
): object {
// Add pathID to path ('pathID' => [])
(isset($param['pathID'])) ? $this->apiModel->setParamToPath($param['pathID']) : null;
if (isset($param['pathID'])) {
$this->apiModel->setParamToPath($param['pathID']);
}
// Fix body si vide
(isset($body)) ? $bodyReponse = json_encode($body, JSON_THROW_ON_ERROR) : $bodyReponse = "{}";

Expand All @@ -76,7 +78,7 @@ public function run(
);

if ($response->getStatusCode() !== 200) {
throw new Exception('Error');
throw new ErrorHttpStatusException();
}

$this->apiModel->setrawSource($response);
Expand Down
8 changes: 5 additions & 3 deletions src/Query/ViescolaireQuery.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@

namespace Studoo\Api\EcoleDirecte\Query;

use Studoo\Api\EcoleDirecte\Core\BuildEntity;
use Studoo\Api\EcoleDirecte\Entity\Viescolaire;
use Studoo\Api\EcoleDirecte\Exception\NotDataResponseException;

/**
* Traitement de la requête sur la vie scolaire par requête API EcoleDirecte
Expand All @@ -29,16 +31,16 @@ public function __construct()
* Retourne l'entité de la requête API
* @param array $data
* @return object
* @throws NotDataResponseException
*/
public function buildEntity(array $data): object
{
$vieScolaire = new Viescolaire();

if (isset($data['data']) === true) {
self::hasPacked($vieScolaire, $data['data']);
BuildEntity::hasPacked($vieScolaire, $data['data']);
} else {
// TODO: Throw an exception
throw new \Exception('Aucune donnée n\'a été trouvée');
throw new NotDataResponseException();
}
return $vieScolaire;
}
Expand Down
Loading

0 comments on commit 246389c

Please sign in to comment.