yoandm / phpEndi

GNU General Public License v3.0
2 stars 0 forks source link

API REST (en partie?) #2

Open Cyrille37 opened 2 months ago

Cyrille37 commented 2 months ago

Hello @yoandm

Suite à la relance de @kepon85 sur l'agora j'ai fouillé et il semble que l'API fonctionne sur le principe REST.

Après le login en http/html comme fait ici, il suffit de conserver le cookie beaker.session.id, pas besoin de CSRF token.

Avec le client GuzzleHttp

            $cookies = new \GuzzleHttp\Cookie\CookieJar;
            /**
             * enDI say "Navigateur non supporté" -> set the User-Agent
             * Auth works with cookie "beaker.session.id"
             */
            $client = new \GuzzleHttp\Client([
                'base_uri' => $_ENV['endi_url'],
                'cookies' => $cookies,
                'headers' => [
                    'User-Agent' => 'Mozilla/5.0 (X11; Linux x86_64; rv:130.0) Gecko/20100101 Firefox/130.0'
                ],
            ]);

Le login

            $response = $client->post(
                '/login',
                [
                    'form_params' => [
                        // Some params are mandatory !
                        'submit' => 'submit',
                        //'nextpage'=>'/',
                        //'_charset_'=>'UTF-8',
                        //'__formid__' => 'authentication',
                        'login' => $_ENV['endi_username'],
                        'password' => $_ENV['endi_password'],
                    ],
                ]
            );

La liste des clients

        $response = $client->get(
            '/api/v1/companies/'.$company_id.'/customers',
        );

Mise à jour du champs company_name pour un customer

        $response = $client->put(
            '/api/v1/customers/'.$customer_id,
            [
                'json' => [
                    'company_name' => 'My heroic customer'
                ]
            ]
        );
Cyrille37 commented 2 months ago

Et en fait il en est question sur https://framagit.org/caerp/caerp/-/issues/3534

yoandm commented 2 months ago

Oui c'est un principe Rest mais de mémoire il y a des endroits où c'était légèrement différent, où il fallait bricoler etc.

Ça a peut-être évolué.

⁣__

Yoan De Macedo yoandm.com​

Le 19 sept. 2024, 10:30, à 10:30, Cyrille Giquello @.***> a écrit:

Hello @yoandm

Suite à la relance de @kepon85 sur l'agora j'ai fouillé et il semble que l'API fonctionne sur le principe REST.

Après le login en http/html comme fait ici, il suffit de conserver le cookie beaker.session.id, pas besoin de CSRF token.

Avec le client GuzzleHttp

           $cookies = new \GuzzleHttp\Cookie\CookieJar;
           /**
            * enDI say "Navigateur non supporté" -> set the User-Agent
            * Auth works with cookie "beaker.session.id"
            */
           $client = new \GuzzleHttp\Client([
               'base_uri' => $_ENV['endi_url'],
               'cookies' => $cookies,
               'headers' => [
'User-Agent' => 'Mozilla/5.0 (X11; Linux x86_64; rv:130.0)
Gecko/20100101 Firefox/130.0'
               ],
           ]);

Le login

           $response = $client->post(
               '/login',
               [
                   'form_params' => [
                       // Some params are mandatory !
                       'submit' => 'submit',
                       //'nextpage'=>'/',
                       //'_charset_'=>'UTF-8',
                       //'__formid__' => 'authentication',
                       'login' => $_ENV['endi_username'],
                       'password' => $_ENV['endi_password'],
                   ],
               ]
           );

La liste des clients

       $response = $client->get(
           '/api/v1/companies/'.$company_id.'/customers',
       );

Mise à jour du champs company_name pour un customer

       $response = $client->put(
           '/api/v1/customers/'.$customer_id,
           [
               'json' => [
                   'company_name' => 'My heroic customer'
               ]
           ]
       );

-- Reply to this email directly or view it on GitHub: https://github.com/yoandm/phpEndi/issues/2 You are receiving this because you were mentioned.

Message ID: @.***>

Cyrille37 commented 2 months ago

Pour une liste de factures j'ai trouvé ce chemin: https://framagit.org/caerp/caerp/-/issues/3534#note_2132980