Loading .gitignore 0 → 100644 +2 −0 Changes for .gitignore: 2 added lines, 0 removed lines. Original line number Diff line number Diff line .idea ./vendor/ No newline at end of file .gitlab-ci.yml 0 → 100644 +9 −0 Changes for .gitlab-ci.yml: 9 added lines, 0 removed lines. Original line number Diff line number Diff line stages: - publish update-satis: stage: publish image: curlimages/curl script: - export NO_PROXY=unicaen.fr - curl https://packagist.unicaen.fr/build?name=unicaen/api-client-bundle CHANGELOG.md 0 → 100644 +6 −0 Changes for CHANGELOG.md: 6 added lines, 0 removed lines. Original line number Diff line number Diff line CHANGELOG ========= 1.0.0 ----- - Première version. README.md 0 → 100644 +107 −0 Changes for README.md: 107 added lines, 0 removed lines. Original line number Diff line number Diff line Bibliothèque unicaen/api ======================== Installation ------------ - Installez la bibliothèque avec composer : ```bash $ composer require unicaen/api ``` Configuration ------------- Des éléments propres à `unicaen/api` se trouvent sous la clé dédiée `'unicaen-api'` : - la configuration des clients Guzzle, sous la clé `'api_clients'` ; - la configuration des éventuels middlewares Guzzle d'obtention de token JWT, sous la clé `'api_client_middlewares'`. Exemple : ```php 'unicaen-api' => [ 'api_clients' => [ 'clients' => [ 'diplomation_api_client' => [ 'class' => RestClient::class, 'options' => [ 'base_uri' => 'https://host.domain.fr/api/coc/ext/v1', 'timeout' => 10, 'http_errors_truncate_at' => 1500, 'middlewares' => [ 'jwt_middleware', ], ], ], ], ], 'api_client_middlewares' => [ 'middlewares' => [ 'jwt_middleware' => [ 'class' => \UnicaenApi\ClientMiddleware\Jwt\JwtMiddleware::class, 'options' => [ 'base_uri' => 'https://host.domain.fr', 'token_url' => '/tickets', 'username' => 'admin', 'password' => 'admin', ], ], ], ], ], ``` Voyez le fichier de config exemple [unicaen-api.local.php.dist](config/unicaen-api.local.php.dist) pour plus de détails. ### Avec persistence du token JWT Il est possible d'activer l'utilisation d'un cache pour persister les tokens JWT et éviter ainsi qu'un nouveau token soit demandé avant chaque appel d'API. Doivent être ajoutés : - la stratégie de persistence `SimpleCacheTokenPersistence`, dans les options du client Guzzle concerné, via la clé `'persistence_strategy'` ; - la configuration du cache `'jwt_middleware_token_persistence_cache'` utilisé pour persister le token JWT, sous la clé des caches Laminas nommée `'caches'`. Exemple : ```php 'unicaen-api' => [ 'api_client_middlewares' => [ 'middlewares' => [ 'jwt_middleware' => [ 'options' => [ // ... 'persistence_strategy' => \Eljam\GuzzleJwt\Persistence\SimpleCacheTokenPersistence::class, ], ], ], ], ], 'caches' => [ 'jwt_middleware_token_persistence_cache' => [ 'options' => [ 'ttl' => 60*60, // 1h 'cache_dir' => __DIR__ . '/../../data/cache', ], ], ], ``` Voyez le fichier de config exemple [unicaen-api.local.php.dist](config/unicaen-api.local.php.dist) pour plus de détails. Assurez-vous que le répoertoire spécifié par la clé `'cache_dir'` est bien accessible en écriture au user pertinent. SI vous voulez provisoirement désativer la persistence du token, commentez ou mettez la clé `'persistence_strategy'` à `null`. Utilisation ----------- todo Resources/config/doctrine/Unicaen.Api.Entity.Db.Log.dcm.xml 0 → 100644 +33 −0 Changes for Resources/config/doctrine/Unicaen.Api.Entity.Db.Log.dcm.xml: 33 added lines, 0 removed lines. Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> <entity name="Api\Entity\Db\Log" table="API_LOG"> <id name="id" type="integer" column="id"> <generator strategy="SEQUENCE"/> </id> <field name="module" column="module"/> <field name="operation" column="operation"/> <field name="startedOn" type="datetime" column="started_on"/> <field name="endedOn" type="datetime" column="ended_on"/> <field name="success" type="boolean" column="success"/> <field name="log" column="log"/> <field name="command" column="command"/> <!-- <field name="tefFileContentHash" column="tef_file_content_hash"/>--> <!-- <field name="tefFileContent" column="tef_file_content"/>--> <field name="hasProblems" type="boolean" column="has_problems"/> <field name="tag" column="tag"/> <!-- <many-to-one field="these" target-entity="These\Entity\Db\These">--> <!-- <join-columns>--> <!-- <join-column name="these_id" referenced-column-name="id"/>--> <!-- </join-columns>--> <!-- </many-to-one>--> </entity> </doctrine-mapping> Loading
.gitignore 0 → 100644 +2 −0 Changes for .gitignore: 2 added lines, 0 removed lines. Original line number Diff line number Diff line .idea ./vendor/ No newline at end of file
.gitlab-ci.yml 0 → 100644 +9 −0 Changes for .gitlab-ci.yml: 9 added lines, 0 removed lines. Original line number Diff line number Diff line stages: - publish update-satis: stage: publish image: curlimages/curl script: - export NO_PROXY=unicaen.fr - curl https://packagist.unicaen.fr/build?name=unicaen/api-client-bundle
CHANGELOG.md 0 → 100644 +6 −0 Changes for CHANGELOG.md: 6 added lines, 0 removed lines. Original line number Diff line number Diff line CHANGELOG ========= 1.0.0 ----- - Première version.
README.md 0 → 100644 +107 −0 Changes for README.md: 107 added lines, 0 removed lines. Original line number Diff line number Diff line Bibliothèque unicaen/api ======================== Installation ------------ - Installez la bibliothèque avec composer : ```bash $ composer require unicaen/api ``` Configuration ------------- Des éléments propres à `unicaen/api` se trouvent sous la clé dédiée `'unicaen-api'` : - la configuration des clients Guzzle, sous la clé `'api_clients'` ; - la configuration des éventuels middlewares Guzzle d'obtention de token JWT, sous la clé `'api_client_middlewares'`. Exemple : ```php 'unicaen-api' => [ 'api_clients' => [ 'clients' => [ 'diplomation_api_client' => [ 'class' => RestClient::class, 'options' => [ 'base_uri' => 'https://host.domain.fr/api/coc/ext/v1', 'timeout' => 10, 'http_errors_truncate_at' => 1500, 'middlewares' => [ 'jwt_middleware', ], ], ], ], ], 'api_client_middlewares' => [ 'middlewares' => [ 'jwt_middleware' => [ 'class' => \UnicaenApi\ClientMiddleware\Jwt\JwtMiddleware::class, 'options' => [ 'base_uri' => 'https://host.domain.fr', 'token_url' => '/tickets', 'username' => 'admin', 'password' => 'admin', ], ], ], ], ], ``` Voyez le fichier de config exemple [unicaen-api.local.php.dist](config/unicaen-api.local.php.dist) pour plus de détails. ### Avec persistence du token JWT Il est possible d'activer l'utilisation d'un cache pour persister les tokens JWT et éviter ainsi qu'un nouveau token soit demandé avant chaque appel d'API. Doivent être ajoutés : - la stratégie de persistence `SimpleCacheTokenPersistence`, dans les options du client Guzzle concerné, via la clé `'persistence_strategy'` ; - la configuration du cache `'jwt_middleware_token_persistence_cache'` utilisé pour persister le token JWT, sous la clé des caches Laminas nommée `'caches'`. Exemple : ```php 'unicaen-api' => [ 'api_client_middlewares' => [ 'middlewares' => [ 'jwt_middleware' => [ 'options' => [ // ... 'persistence_strategy' => \Eljam\GuzzleJwt\Persistence\SimpleCacheTokenPersistence::class, ], ], ], ], ], 'caches' => [ 'jwt_middleware_token_persistence_cache' => [ 'options' => [ 'ttl' => 60*60, // 1h 'cache_dir' => __DIR__ . '/../../data/cache', ], ], ], ``` Voyez le fichier de config exemple [unicaen-api.local.php.dist](config/unicaen-api.local.php.dist) pour plus de détails. Assurez-vous que le répoertoire spécifié par la clé `'cache_dir'` est bien accessible en écriture au user pertinent. SI vous voulez provisoirement désativer la persistence du token, commentez ou mettez la clé `'persistence_strategy'` à `null`. Utilisation ----------- todo
Resources/config/doctrine/Unicaen.Api.Entity.Db.Log.dcm.xml 0 → 100644 +33 −0 Changes for Resources/config/doctrine/Unicaen.Api.Entity.Db.Log.dcm.xml: 33 added lines, 0 removed lines. Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> <entity name="Api\Entity\Db\Log" table="API_LOG"> <id name="id" type="integer" column="id"> <generator strategy="SEQUENCE"/> </id> <field name="module" column="module"/> <field name="operation" column="operation"/> <field name="startedOn" type="datetime" column="started_on"/> <field name="endedOn" type="datetime" column="ended_on"/> <field name="success" type="boolean" column="success"/> <field name="log" column="log"/> <field name="command" column="command"/> <!-- <field name="tefFileContentHash" column="tef_file_content_hash"/>--> <!-- <field name="tefFileContent" column="tef_file_content"/>--> <field name="hasProblems" type="boolean" column="has_problems"/> <field name="tag" column="tag"/> <!-- <many-to-one field="these" target-entity="These\Entity\Db\These">--> <!-- <join-columns>--> <!-- <join-column name="these_id" referenced-column-name="id"/>--> <!-- </join-columns>--> <!-- </many-to-one>--> </entity> </doctrine-mapping>