Utilisation du Web Service de Facile

Facile expose un Web Service REST qui peut être interrogé programmatiquement. Cette section propose deux façons d'accéder au service de validation de formats du CINES.

Réponse de Facile

Facile renvoie une réponse au format XML qui se présente de la forme suivante:

‹?xml version="1.0" encoding="UTF-8"?›
‹validator xmlns="http://facile.cines.fr" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://facile.cines.fr http://facile.cines.fr/facile.xsd"›
‹fileName›M601415401_MS2GB12_0008.tif‹/fileName›
‹valid›true‹/valid›
‹wellformed›true‹/wellformed›
‹archivable›true‹/archivable›
‹md5sum›true‹/md5sum›
‹sha256sum›true‹/sha256sum›
‹size›66954566‹/size›
‹format›TIFF‹/format›
‹version›6.0‹/version›
‹encoding›NA‹/encoding›
‹message›null‹/message›
‹/validator›

Le résultat le plus important pour l'archivage sur la plateforme PAC se situe dans la balise <valid>. Elle doît être positionnée à « true » pour que le document soit archivable.

Les checksum servent à vérifier que l'intégrité du fichier a été conservé durant le transfert. Le client du Web Service doît s'assurer que les checksum avant le transfert sont les mêmes que ceux calculés par FACILE.

Appel du Web Service avec curl

curl est un programme permettant de réaliser une requête HTTP. Son utilisation est simple:

curl --form file=@mon_fichier.fff https://facile.cines.fr/xml

Il faut remplacer mon_fichier.fff par le chemin vers le fichier à valider. Cette commande devrait renvoyer une chaîne XML telle que présentée ci-dessus.

Appel du Web Service en Java

L'exemple ci-dessous s'appuie sur la librairie Apache HttpClient

package fr.cines.client;

import java.io.File;
import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

/**
 * Client Facile
 */
public class ClientFacile {
    public static void main( String[] args ) throws ClientProtocolException, IOException {

      HttpClient httpClient = new DefaultHttpClient();
      
      // La requête vers le Web Service est obligatoirement POST
      HttpPost httpPost = new HttpPost("http://facile.cines.fr/xml"); // L'adresse du Web Service Facile
      File file = new File("/chemin_vers_fichier/fichier.fff");
   
      // L'envoie d'un fichier par une requête POST nécessite un type d'encodage Multipart/Form-data
      MultipartEntityBuilder builder = MultipartEntityBuilder.create();
      builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
      
      FileBody fileBody = new FileBody(file);
      builder.addPart("file", fileBody);
      
       
      httpPost.setEntity(builder.build());
       
      HttpResponse response = httpClient.execute(httpPost);
      HttpEntity resEntity = response.getEntity();
      
      // La chaîne suivante est disponible au format ci-dessus
      String xml = EntityUtils.toString(resEntity);
    }
}