AlternC : Différence entre versions

De Wiki d'activités IMA
 
(50 révisions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
Création d'un REST API pour Altern C  
+
'''Création d'un REST API pour Altern C'''
  
Grandes lignes du sujet :
 
  
 +
__TOC__
 +
<br style="clear: both;">
 +
 +
=Présentation =
 +
[[Fichier:home.jpg|400px|thumb|right]]
 
Cette API a pour but de découpler le 'Bureau' (panel de gestion d'AlternC) des classes métier. Ses objectifs sont:
 
Cette API a pour but de découpler le 'Bureau' (panel de gestion d'AlternC) des classes métier. Ses objectifs sont:
 
+
<ul>
    S'interfacer avec les classes métier existantes, de façon à créer une interface unifiée et pérenne
+
<li>S'interfacer avec les classes métier existantes, de façon à créer une interface unifiée et pérenne</li>
    Abstraire les détails d'implémentation et les particularités de chaque module
+
<li>Abstraire les détails d'implémentation et les particularités de chaque module</li>
    Fournir des primitives de bases pour chaque module (Ajouter / Modifier / Supprimer)
+
<li>Fournir des primitives de bases pour chaque module (Ajouter / Modifier / Supprimer)</li>
    Être facilement extensible par exemple, permettre de rajouter un module ou un nouveau format de sortie  
+
<li>Être facilement extensible par exemple, permettre de rajouter un module ou un nouveau format de sortie </li>
 
+
</ul>
 
Cette API à terme sera utilisée par le 'Bureau' afin de dissocier les fonctions métiers de l'interface de gestion. Elle ouvrira la possibilité d'interfacer directement Alternc avec d'autres applications telles qu'une application mobile ou autres outils de gestion ERP. Techniquement:
 
Cette API à terme sera utilisée par le 'Bureau' afin de dissocier les fonctions métiers de l'interface de gestion. Elle ouvrira la possibilité d'interfacer directement Alternc avec d'autres applications telles qu'une application mobile ou autres outils de gestion ERP. Techniquement:
 +
<ul>
 +
    <li>AlternC est développé en PHP, et utilise le concept de Programmation Orienté Objet</li>
 +
    <li>AlternC utilise un gestionnaire de version (git / svn)</li>
 +
    <li>AlternC vise à être intégré dans la distribution Gnu/Linux Debian, des packages sont donc régulièrement construits.</li>
 +
    <li>AlternC utilise un gestionnaire de bugs
 +
    <li>AlternC utilise des moyens de communication électroniques (liste de diffusion, IRC, Conf Call)</li>
 +
</ul>
 +
=Les attentes du projet=
  
    AlternC est développé en PHP, et utilise le concept de Programmation Orienté Objet
+
Une reflexion est demandée sur les choix des methodes de l'API: convention de nommage, protocole de communication, sécurité, etc ...
    AlternC utilise un gestionnaire de version (git / svn)
+
Rédaction d'une documentation technique est fonctionnelle (c'est à dire orienté programmeur et utilisateur (de l'API))
    AlternC vise à être intégré dans la distribution Gnu/Linux Debian, des packages sont donc régulièrements construits.
+
Intégration à la communauté AlternC (au moins pour la durée du projet) pour échanger sur les différents choix
    AlternC utilise un gestionnaire de bugs
+
Prise en considération de la maintenabilité et de l'utilisabilité de l'API : AltenrC est un logiciel libre voué à être utilisé longtemps, et par de nombreuses personnes.
    AlternC utilise des moyens de communication électroniques (liste de diffusion, IRC, Conf Call)
 
  
Les attentes du projet:
 
  
    Une reflexion est demandée sur les choix des methodes de l'API: convention de nommage, protocole de communication, sécurité, etc ...
 
    Rédaction d'une documentation technique est fonctionnelle (c'est à dire orienté programmeur et utilisateur (de l'API))
 
    Intégration à la communauté AlternC (au moins pour la durée du projet) pour échanger sur les différents choix
 
    Prise en considération de la maintenabilité et de l'utilisabilité de l'API : AltenrC est un logiciel libre voué à être utilisé longtemps, et par de nombreuses personnes.
 
  
_____________________________________________________________________________
+
=Roadmap initial=
 +
Après notre première visite à l'IRCICA, les encadrant nous ont proposé la roadmap suivante. Elle nous a permis de voir approximativement comment se découpait le projet.
  
Début de Roadmap après la visite de nos encadrants à l'IRCICA :
 
  
 +
===06/02/2013===
  
06/02/2013:
 
  
 
Installation d'AlternC 3.0 sur leur machine à l'école.
 
Installation d'AlternC 3.0 sur leur machine à l'école.
Ligne 38 : Ligne 44 :
 
Regarder la page http://alternc.org/wiki/RestAPI
 
Regarder la page http://alternc.org/wiki/RestAPI
  
13/02/2013:
+
===13/02/2013===
  
 
Descendre plus bas dans AlternC pour différencier les modules, le bureau
 
Descendre plus bas dans AlternC pour différencier les modules, le bureau
Ligne 49 : Ligne 55 :
 
branche dans subversion.
 
branche dans subversion.
  
20/02/2013:
+
===20/02/2013===
  
 
Implémenter quelques fonctions d'un module simple, pour valider ce
 
Implémenter quelques fonctions d'un module simple, pour valider ce
Ligne 56 : Ligne 62 :
  
  
27/02/2013:
+
===27/02/2013===
  
 
Commencer à regarder comment ça marche "sur android".
 
Commencer à regarder comment ça marche "sur android".
  
_____________________________________________________________________________
+
=Avancement du projet=
  
 +
===07/02/2013===
  
07/02/2013:
+
Installation d'AlternC Sur la machine de Polytech ( ZABETH15)
  
Installation d'AlternC Sur la machine de Polytech ( ZABETH15)
 
  
Première utilisation d'AlternC;
 
  
11/02/2013:
+
===11/02/2013===
  
 +
Première utilisation d'AlternC
 
Analyse des principales fonction d'Alternc que nous allons utiliser
 
Analyse des principales fonction d'Alternc que nous allons utiliser
  
 +
===14/02/2013===
 
Etude du fonctionnement d'un REST API :  
 
Etude du fonctionnement d'un REST API :  
  
Ligne 79 : Ligne 86 :
 
=> Echange des données en JSON
 
=> Echange des données en JSON
  
14/02/2013
+
===26/02/2013===
  
 
Découpage du projet en sous-tâche
 
Découpage du projet en sous-tâche
Ligne 85 : Ligne 92 :
 
Début de codage des pages d'actions
 
Début de codage des pages d'actions
  
28/02/2013
+
===28/02/2013===
  
 
La programmation des pages PHP est en cours.
 
La programmation des pages PHP est en cours.
Ligne 92 : Ligne 99 :
  
  
14/03/2013
+
===14/03/2013===
 
Les pages PHP sont bien avancées, on a accès a pas mal de fonctionnalités.
 
Les pages PHP sont bien avancées, on a accès a pas mal de fonctionnalités.
 
Le test des pages via CURL est validé.
 
Le test des pages via CURL est validé.
  
02/04/2013
+
===02/04/2013===
  
 
Les pages PHP sont globalement terminées.
 
Les pages PHP sont globalement terminées.
 
Le codage des pages ANDROID débute.
 
Le codage des pages ANDROID débute.
  
11/04/2013
+
===11/04/2013===
 
Gros soucis au niveau de l'ANDROID.
 
Gros soucis au niveau de l'ANDROID.
Etant novices dans ce domaine, on a par mégarde touché un fichier généré (celui contenant les ID),
+
Etant novices dans ce domaine, on a par mégarde touché un fichier généré (celui contenant les ID).
 
conclusion impossible de récupérer un code qui compile sans s'effacer lorsqu'on le "clean" via eclipse.
 
conclusion impossible de récupérer un code qui compile sans s'effacer lorsqu'on le "clean" via eclipse.
Décision est prise de recommencer les pages ANDROID et de se dispatcher le travail entre le design android et les requettes php/JSON.
+
Décision est prise de recommencer les pages ANDROID et de se dispatcher le travail (en se séparant les dossiers à coder)
________________________________________________________________________________________________________________________
 
  
Partie de Samir Boudjema : Dossiers QUOTAS, BDD, MAIL, la page login.php + cURL :
+
===29/04/2013===
 +
Début des test avec l'émulateur d'ANDROID.
 +
Debug des pages.
 +
===TUTO===
 +
Comment rendre les pages PHP du répertoire /var/www/Alternc_RESTAPI lisibles par apache :
  
 +
  1) Editer le fichier /etc/apache2/conf.d/test.conf et y écrire :
 +
 +
        alias /test /var/www/Alternc_RESTAPI
 +
        <Directory /var/www/Alternc_RESTAPI>
 +
                    Options FollowSymLinks
 +
                    AllowOverride None
 +
                    Order allow,deny
 +
                    Allow from all
 +
        </Directory>
 +
 +
  2) Redémarrer apache : /etc/init.d/apache2 restart
 +
 +
 +
Note : Ce repertoire "Alternc_RESTAPI", est utilisé par l'application client pour lancer les requêtes vers l'API qui se trouve à l'intérieur. Ceci pour passer outre le fait qu'après installation d'Alternc nous avons eu des soucis pour lire nos pages
 +
PHP à partir du dossier /var/www.
  
[TUTO] Comment rendre les pages PHP du répertoire /var/www/test lisibles par apache ?
+
=Partage des parties=
  
 +
== Partie de Samir: ==
 +
Dossiers QUOTAS, BDD, MAIL, la page login.php + cURL :
  
 +
===Possibilités===
 +
====BDD====
  
  1) Editer le fichier /etc/apache2/conf.d/test.conf et y écrire :
+
Dans ce répertoire vous pouvez: <br/>
        alias /test /var/www/test
+
=> Ajouter une base de donnée <br />
        <Directory /var/www/test>
+
=> Supprimer une base de donnée <br />
                    Options FollowSymLinks
+
=> Modifier les paramètres d'une base de donnée (backup, quotas,..) <br />
                    AllowOverride None
+
=> Vérifier si une base de donnée existe <br />
                    Order allow,deny
+
=> Obtenir leur liste <br />
                    Allow from all
+
 
        </Directory>
+
=> Ajouter un utilisateur pour la base de donnée<br />
  2) Redémarrer apache : /etc/init.d/apache2 restart
+
=> Modifier les droits d'un utilisateur (ex : 'SELECT')<br />
 +
=> Supprimer un utilisateur de la base de donnée<br />
 +
=> Savoir si un utilisateur existe ou non<br />
 +
=> Obtenir la liste des utilisateur de la base de donnée<br />
 +
 
 +
=> Obtenir la liste des quotas des utilisateurs de la base de donnée<br />
 +
=> Ajouter un quota concernant la base de donnée pour un utilisateur<br />
 +
=> Modifier un quota concernant un utilisateur<br />
 +
=> Supprimer un quota pour un utilisateur<br />
 +
 
 +
====QUOTAS====
 +
 
 +
 
 +
Dans ce répertoire vous pouvez:
 +
 
 +
=> Ajouter un quota à un utilisateur en choisissant le paramètre voulu ("mysql", pour la base de donnée par exemple), la taille est en MB <br />
 +
=> Obtenir la liste de tous les quotas<br />
 +
=> Supprimer tous les quotas d'un utilisateur<br />
 +
=> Modifier les quotas d'un utilisateur<br />
 +
 
 +
====MAIL====
 +
 
 +
 
 +
Dans ce répertoire vous pouvez effectuer l'ensemble des possibilités de la base de donnée appliqués aux mails/domaines
 +
 +
 
 +
 
 +
===Utilisation===
 +
 
 +
Concernant l'utilisation, elle est assez intuitive puisque j'ai précisé dans chaque champ de l'application ANDROID les éléments à y entrer. (visible sur les fichiers .xml de la source ANDROID)
 +
 
 +
===L'API===
 +
 
 +
[[Fichier:Alternc_RESTAPI_BS.zip]]
 +
 
 +
Note 1 : ne contient que l'API concernant les 3 dossiers cités plus haut (MAIL,BDD,QUOTAS), il faudra fusionner ce .zip avec le .zip des 2 autres dossiers (ALTERNC , WEBSITE)
 +
<br /> Note 2: Pour l'utiliser avec la source ANDROID il faut la décompresser dans le dossier /var/www/
 +
 
 +
 
 +
===La source ANDROID - Partie 1 ===
 +
[[Fichier:SourceAndroid_API_Partie1.zip‎]]
 +
 +
 +
Note : A exécuter sur Eclipse, elle permet d’interagir avec les 3 dossiers cités plus haut
 +
 
 +
 
 +
==Partie de Célia Amégavie : ==
 +
Dossiers WEBSITE, ALTERNC et la validation des pages PHP via cURL :
 +
 
 +
===Possibilités===
 +
====Alternc====
 +
 
 +
Dans ce répertoire vous pouvez:
 +
 
 +
=> Ajouter un utilisateur <br />
 +
=> Supprimer un utilisateur <br />
 +
=> Modifier les paramètres d'un utilisateur (nom, prénom, mot de passe ) <br />
 +
=> Vérifier si un utilisateur existe <br />
 +
=> Obtenir la liste des utilisateur <br />
 +
 
 +
=> Voir les quotas d'un utilisateur<br />
 +
=> Modifier les quotas un utilisateur <br />
 +
 
 +
====Website====
 +
 
 +
 
 +
Dans ce répertoire vous pouvez:  
 +
 
 +
=> Ajouter un nouveau domaine <br />
 +
=> Supprimer un domaine existant <br />
 +
 
 +
 
 +
===Utilisation===
 +
 
 +
Concernant l'utilisation, elle est assez intuitive puisque j'ai précisé dans chaque champ de l'application ANDROID les éléments à y entrer. (visible sur les fichiers .xml de la source ANDROID)
 +
 
 +
===L'Api===
 +
voici le dossier compressé contenant les pages php
 +
 
 +
[[Fichier:Altenc_RESTAPI.zip]]
  
Note : Ce repertoire "test", bien que le nom est mal choisi, est utilisé par l'application client pour lancer les requêtes vers l'API
+
===La source Android===
qui se trouve à l'intérieur. Ceci pour passer outre le fait qu'après installation d'Alternc nous avons eu des soucis pour lire nos pages
+
voici le projet android
PHP à partir du dossier /var/www.
 
  
/!\ MODIFICATION EN COURS  /!\
+
[[Fichier:Android.zip]]
  
Partie de Célia Amégavie : Dossiers WEBSITE, ALTERNC et la validation des pages PHP via cURL :
+
=Rapport=
 +
[[Fichier:Rapport_Projet_APIREST_ Alternc.pdf]]

Version actuelle datée du 24 septembre 2014 à 12:47

Création d'un REST API pour Altern C



Présentation

Home.jpg

Cette API a pour but de découpler le 'Bureau' (panel de gestion d'AlternC) des classes métier. Ses objectifs sont:

  • S'interfacer avec les classes métier existantes, de façon à créer une interface unifiée et pérenne
  • Abstraire les détails d'implémentation et les particularités de chaque module
  • Fournir des primitives de bases pour chaque module (Ajouter / Modifier / Supprimer)
  • Être facilement extensible par exemple, permettre de rajouter un module ou un nouveau format de sortie

Cette API à terme sera utilisée par le 'Bureau' afin de dissocier les fonctions métiers de l'interface de gestion. Elle ouvrira la possibilité d'interfacer directement Alternc avec d'autres applications telles qu'une application mobile ou autres outils de gestion ERP. Techniquement:

  • AlternC est développé en PHP, et utilise le concept de Programmation Orienté Objet
  • AlternC utilise un gestionnaire de version (git / svn)
  • AlternC vise à être intégré dans la distribution Gnu/Linux Debian, des packages sont donc régulièrement construits.
  • AlternC utilise un gestionnaire de bugs
  • AlternC utilise des moyens de communication électroniques (liste de diffusion, IRC, Conf Call)

Les attentes du projet

Une reflexion est demandée sur les choix des methodes de l'API: convention de nommage, protocole de communication, sécurité, etc ... Rédaction d'une documentation technique est fonctionnelle (c'est à dire orienté programmeur et utilisateur (de l'API)) Intégration à la communauté AlternC (au moins pour la durée du projet) pour échanger sur les différents choix Prise en considération de la maintenabilité et de l'utilisabilité de l'API : AltenrC est un logiciel libre voué à être utilisé longtemps, et par de nombreuses personnes.


Roadmap initial

Après notre première visite à l'IRCICA, les encadrant nous ont proposé la roadmap suivante. Elle nous a permis de voir approximativement comment se découpait le projet.


06/02/2013

Installation d'AlternC 3.0 sur leur machine à l'école. Prise en main d'AlternC, plutôt point de vue utilisateur. Listing des fonctionnalité, des "modules" et des actions pour chaque module. Analyser les besoins de l'API => par écrit Regarder la page http://alternc.org/wiki/RestAPI

13/02/2013

Descendre plus bas dans AlternC pour différencier les modules, le bureau ces choses là. Instancier les besoins de l'API et enrichir l'écrit de la semaine précédente. Regarder le code de domi (http://alternc.org/browser/alternc/branches/dev-restapi) , commencer une ébauche d'API, pour pouvoir commencer à jouer. Nota: c'est une branche dans subversion.

20/02/2013

Implémenter quelques fonctions d'un module simple, pour valider ce morceau d'API.


27/02/2013

Commencer à regarder comment ça marche "sur android".

Avancement du projet

07/02/2013

Installation d'AlternC Sur la machine de Polytech ( ZABETH15)


11/02/2013

Première utilisation d'AlternC Analyse des principales fonction d'Alternc que nous allons utiliser

14/02/2013

Etude du fonctionnement d'un REST API :

=> Une page d'adresse = une action

=> Echange des données en JSON

26/02/2013

Découpage du projet en sous-tâche Attribution des sous-tâches à chaque étudiant Début de codage des pages d'actions

28/02/2013

La programmation des pages PHP est en cours. Elles sont globalement composées d'une variable qui récupere la commande PHP, et qui la teste dans un switch, afin d'effectuer l'action appropriée. Des screens seront à prévoir


14/03/2013

Les pages PHP sont bien avancées, on a accès a pas mal de fonctionnalités. Le test des pages via CURL est validé.

02/04/2013

Les pages PHP sont globalement terminées. Le codage des pages ANDROID débute.

11/04/2013

Gros soucis au niveau de l'ANDROID. Etant novices dans ce domaine, on a par mégarde touché un fichier généré (celui contenant les ID). conclusion impossible de récupérer un code qui compile sans s'effacer lorsqu'on le "clean" via eclipse. Décision est prise de recommencer les pages ANDROID et de se dispatcher le travail (en se séparant les dossiers à coder)

29/04/2013

Début des test avec l'émulateur d'ANDROID. Debug des pages.

TUTO

Comment rendre les pages PHP du répertoire /var/www/Alternc_RESTAPI lisibles par apache :

 1) Editer le fichier /etc/apache2/conf.d/test.conf et y écrire :
       alias /test /var/www/Alternc_RESTAPI	
       <Directory /var/www/Alternc_RESTAPI>	
                   Options FollowSymLinks	
                   AllowOverride None	
                   Order allow,deny	
                   Allow from all	
       </Directory>
 2) Redémarrer apache : /etc/init.d/apache2 restart


Note : Ce repertoire "Alternc_RESTAPI", est utilisé par l'application client pour lancer les requêtes vers l'API qui se trouve à l'intérieur. Ceci pour passer outre le fait qu'après installation d'Alternc nous avons eu des soucis pour lire nos pages PHP à partir du dossier /var/www.

Partage des parties

Partie de Samir:

Dossiers QUOTAS, BDD, MAIL, la page login.php + cURL :

Possibilités

BDD

Dans ce répertoire vous pouvez:
=> Ajouter une base de donnée
=> Supprimer une base de donnée
=> Modifier les paramètres d'une base de donnée (backup, quotas,..)
=> Vérifier si une base de donnée existe
=> Obtenir leur liste

=> Ajouter un utilisateur pour la base de donnée
=> Modifier les droits d'un utilisateur (ex : 'SELECT')
=> Supprimer un utilisateur de la base de donnée
=> Savoir si un utilisateur existe ou non
=> Obtenir la liste des utilisateur de la base de donnée

=> Obtenir la liste des quotas des utilisateurs de la base de donnée
=> Ajouter un quota concernant la base de donnée pour un utilisateur
=> Modifier un quota concernant un utilisateur
=> Supprimer un quota pour un utilisateur

QUOTAS

Dans ce répertoire vous pouvez:

=> Ajouter un quota à un utilisateur en choisissant le paramètre voulu ("mysql", pour la base de donnée par exemple), la taille est en MB
=> Obtenir la liste de tous les quotas
=> Supprimer tous les quotas d'un utilisateur
=> Modifier les quotas d'un utilisateur

MAIL

Dans ce répertoire vous pouvez effectuer l'ensemble des possibilités de la base de donnée appliqués aux mails/domaines


Utilisation

Concernant l'utilisation, elle est assez intuitive puisque j'ai précisé dans chaque champ de l'application ANDROID les éléments à y entrer. (visible sur les fichiers .xml de la source ANDROID)

L'API

Fichier:Alternc RESTAPI BS.zip

Note 1 : ne contient que l'API concernant les 3 dossiers cités plus haut (MAIL,BDD,QUOTAS), il faudra fusionner ce .zip avec le .zip des 2 autres dossiers (ALTERNC , WEBSITE)
Note 2: Pour l'utiliser avec la source ANDROID il faut la décompresser dans le dossier /var/www/


La source ANDROID - Partie 1

Fichier:SourceAndroid API Partie1.zip


Note : A exécuter sur Eclipse, elle permet d’interagir avec les 3 dossiers cités plus haut


Partie de Célia Amégavie :

Dossiers WEBSITE, ALTERNC et la validation des pages PHP via cURL :

Possibilités

Alternc

Dans ce répertoire vous pouvez:

=> Ajouter un utilisateur
=> Supprimer un utilisateur
=> Modifier les paramètres d'un utilisateur (nom, prénom, mot de passe )
=> Vérifier si un utilisateur existe
=> Obtenir la liste des utilisateur

=> Voir les quotas d'un utilisateur
=> Modifier les quotas un utilisateur

Website

Dans ce répertoire vous pouvez:

=> Ajouter un nouveau domaine
=> Supprimer un domaine existant


Utilisation

Concernant l'utilisation, elle est assez intuitive puisque j'ai précisé dans chaque champ de l'application ANDROID les éléments à y entrer. (visible sur les fichiers .xml de la source ANDROID)

L'Api

voici le dossier compressé contenant les pages php

Fichier:Altenc RESTAPI.zip

La source Android

voici le projet android

Fichier:Android.zip

Rapport

Fichier:Rapport Projet APIREST Alternc.pdf