Skip to content

edoreld/Dauphine-Data

 
 

Repository files navigation

Dauphine Open Data Build Status Quality Gate

Sonar analysis

Bugs Vulnerabilities Code Smells

Coverage Duplicated Lines

Description

L’université Paris-Dauphine crée et met à jour de nombreuses données publiques, qui sont parfois mises à disposition uniquement via son site web, voire parfois non mises à disposition et simplement conservées dans des bases de données.

Le mouvement open data considère que les données bénéficient d’une exposition maximale, dans des formats facilement lisibles par des machines. Entre autres bénéfices, cette approche facilite la réutilisation et l’innovation.

Ce projet a pour but de créer une plate-forme qui servira à la mise à disposition de certaines données publiques de Paris-Dauphine. Il visera à mettre également à disposition certaines données non publiques après authentification. Par exemple, un enseignant a droit d’accès aux adresses e-mail des étudiants qui suivent son cours, mais ces données ne sont pas publiques.

Cahier des Charges

Il a été décidé de repartir de zéro afin d’éviter de devoir corriger ou découvrir trop de comportements non souhaités. Le projet va se décomposer en 2 parties.

  • La lib qui contient les entités et les Dao

  • Le serveur qui contient les servlets et qui dépend de la lib.

Itération 1

  • 5 Entités : Person, Course, Lecture, Planning

  • 1 Dao générique implémentant un CRUD simple.

  • 1 Servlet générique exposant les entités en lecture seule, en Json et XML

  • Un test pour chaque URL exposée via Arquillian

Itération 2 :

  • Sérialisation de certaines entités sous d’autres formats :

    • Course au format CDM-fr

    • Planning au format VCal

    • Person au format VCard

  • Réalisation d’un client simple pour une démo

  • Déploiement dans IBM Cloud

  • Prise de contact avec la DSI de dauphine pour anticiper les fonctionnalites de l’itération 3 (URGENT)

Itération 3 :

El Amrani

  • import vcal

  • injecteur vcal démarrage

Omar

  • import vcard

  • injecteur vcard démarrage

Taric

  • route pour faire des filtres sur l’entité Person

Javier

  • route pour faire des filtres sur l’entité Course

  • création de classe pour faciliter la création des filtres pour la recherche des entités

Barth

  • Gestion des comptes et authentification

  • Gestion des privilèges et controle d’accès

  • Ces deux fonctionnalités seront développées de facon à être au maximum réutilisables lors de l’intégration avec le CAS de dauphine

Arnaud

  • Tracage des requetes

  • Gestion des quotas

Déploiement IBM cloud

Travis déploie l’application et Swagger-ui automatiquement depuis le branche master.

Les URLs sont :

Voici un exemple de commande curl pour faire un post :

curl -X POST "https://dauphine-open-datas2.eu-gb.mybluemix.net/person" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"firstName\":\"Didier\",\"lastName\":\"Sana\",\"ine\":\"187383\",\"office\":\"B134\",\"phoneNumer\":\"0183738\",\"training\":\"Mangement\",\"fax\":\"183938\",\"isActive\":true}"

Pour plus d’information sur comment fonctionne le déploiement, voir :

Swagger

La doc sur swagger se trouve sur ici

Swagger-ui

Swagger-ui est déployé automatiquement sur ibmcloud : https://dauphine-open-datas-swagger-ui.eu-gb.mybluemix.net

Pour le lancer localement : * installer le package npm http-server * cd swagger-ui-dist && http-server --cors

CLI

Un client en ligne de commande est généré par le script ./scripts/generate-cli.sh.

Pour s’authentifier, le client a besoin d’un token dans la variable $DOD_TOKEN:

export DOD_TOKEN=$(./cli/client.sh authenticate username==sylvie password==789)

Pour créer un cours:

./cli/client.sh createCourse courseID=="42" courseName==maths courseDescription==complique instructionLanguage==fr

Pour lister les cours:

./cli/client.sh listCourses

Pour récupérer le cours avec l’identifiant 1:

./cli/client.sh getCourse id=1

Pour afficher toutes les commandes disponibles:

./cli/client.sh --help
## Une nouvelle fonctionnalité a été ajoutée pour faciliter les recherches sur la classe person ainsi que des Tests Junit
   3 champs ont été retenus pour la recherche:
        * le nom    qui fait référence au champ : firstName
        * le prénom qui fait référence au champ : lastName
        * le cours  qui fait référence au champ : course
        * Voici quelques commandes pour faire des tests avec curl:
  • Faites un post avec en local avec curl :

curl -X POST "http://localhost:8080/person" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"firstName\":\"Dani\",\"lastName\":\"Sana\",\"ine\":\"187383\",\"office\":\"B134\",\"phoneNumer\":\"0183738\",\"training\":\"Mangement\",\"fax\":\"183938\",\"isActive\":true}"

  • Faites un get pour si tout marche

    curl http://localhost:8080/person/personfilter?lastName=Sana&firstName=Dani
    ## Ajout de la fonctionnalité pour faciliter les recherches sur la classe lecture
      4 champs ont été retenus pour la recherche:
            * le nom du groupe    qui fait référence au champ : groupName
            * le nom de la salle qui fait référence au champ :  room
            * le cours  qui fait référence au champ : course
            * le nom et le prénom de la personne qui donne le cours +
    • Voici quelques commandes pour faire des tests avec curl:

  • Faites un post avec en local avec curl comme ceci:

     		curl -X POST \
     http://localhost:8080/lecture \
     -H 'Content-Type: application/json' \
     -H 'Postman-Token: 1010e637-ab55-4ab1-8cc0-e9a41ee26424' \
     -H 'cache-control: no-cache' \
     -d '{
    "room" : "B048",
    "course":
     {
    "courseName":"jee",
      	"courseDescription" : "java",
      	"courseID" :"1",
       "instructionLanguage" :"abc"
      }
    ,
    "teacher":{
    	"firstName":"olivier",
    	"lastName" : "Cailloux",
    	"isActive" : true
    	}
    	,
    		    "date" : "2012-04-23",
    		    "duration" : "1",
    		    "groupName": "SITN",
    		    "room":"B048"
    }'
  • Faites un get comme ceci pour voir si tout marche ++

        curl -X GET \
      'http://localhost:8080/lecture/lecturefilter?lfName=Massa&llName=Lolo' \
      -H 'Content-Type: application/json' \
      -H 'Postman-Token: 90c51b0d-7f87-4c8d-a52c-7fe707ce79a3' \
      -H 'cache-control: no-cache' \
      -d '{
    	"firstName":"Taric",
    	"lastName" : "GANDI",
    	"isActive" : true
    }
    ## Une nouvelle fonctionnalité a été ajoutée pour faciliter les recherches sur la classe person ainsi que des Tests Junit
       3 champs ont été retenus pour la recherche:
            * le nom    qui fait référence au champ : firstName
            * le prénom qui fait référence au champ : lastName
            * le cours  qui fait référence au champ : course
            * Voici quelques commandes pour faire des tests avec curl:
  • Faites un post avec en local avec curl :

curl -X POST "http://localhost:8080/person" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"firstName\":\"Dani\",\"lastName\":\"Sana\",\"ine\":\"187383\",\"office\":\"B134\",\"phoneNumer\":\"0183738\",\"training\":\"Mangement\",\"fax\":\"183938\",\"isActive\":true}"

  • Faites un get pour si tout marche

    curl http://localhost:8080/person/personfilter?lastName=Sana&firstName=Dani

Authentification

Une documentation qui explique le mécanisme d’authentification est disponible ici.

Authorization

Une documentation qui explique le mécanisme de contrôle d’accès est disponible ici.

Ci-dessous la commande curl pour tester l’import VCard en ligne de commande

curl -X POST \ http://localhost:8080/person/importvcard \ -H 'Content-Type: text/plain' \ -d 'BEGIN:VCARD VERSION:4.0 N:Gump;Forrest;;Mr.; FN:Forrest Gump UID:F467089i45oT7 TEL;TYPE=CELL,voice;VALUE=uri:tel:+1-111-555-1212 TEL;TYPE=FAX,voice;VALUE=uri:tel:+1-404-555-1212 NOTE:B407 EXPERTISE:Accounting EMAIL:[email protected] END:VCARD'

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 51.8%
  • Shell 45.9%
  • HTML 1.3%
  • Other 1.0%