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.
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.
curl est un programme permettant de réaliser une requête HTTP. Son utilisation est simple:
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.
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); } }