Commit 8fb45d5f authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Initial commit

parents
Loading
Loading
Loading
Loading
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
+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