cURL

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
cURL
Logo
Logo

Dernière version 7.35.0 (29 janvier 2014) [+/-]
Écrit en C
Environnement Multiplate-forme
Type Client HTTP et FTP
Licence Licence libre[1]
Site web (en) curl.haxx.se

cURL (abréviation de Client URL Request Library : « Bibliothèque de requêtes aux URL des clients » ou See URL : « Voir URL ») est une interface en ligne de commande destinée à récupérer le contenu d'une ressource accessible par un réseau informatique. La ressource est désignée à l'aide d'une URL et doit être d'un type supporté par le logiciel (voir ci-dessous). Le logiciel permet de créer ou modifier une ressource (contrairement à wget), il peut ainsi être utilisé en tant que client REST.

Le programme cURL implémente l'interface utilisateur et repose sur la bibliothèque logicielle libcurl. Celle-ci est ainsi accessible aux programmeurs qui veulent disposer des fonctionnalités d'accès au réseau dans leurs programmes. Des interfaces ont été créées dans de nombreux langages (C++, Java, .NET, Perl, PHP, Ruby...).

La bibliothèque supporte notamment les protocoles FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, FILE et LDAP. L'écriture peut se faire en HTTP en utilisant les commandes POST ou PUT.

Ce langage tente de remédier à un problème connu de longue date : les éléments de base qui composent chaque document web moderne requièrent le plus souvent des méthodes de mise en œuvre très différentes : des langages, des outils, des structures différents et souvent des équipes de développement complètement différentes. Le dernier obstacle (et souvent le plus difficile) est de relier ces éléments entre eux de manière cohérente. Curl essaie contourner ces problèmes en proposant une interface syntaxique et sémantique constante à tous niveaux de création de contenu web : du simple HTML au niveau complexe de programmation orientée objet.

Curl combine le balisage de texte (HTML), l’écriture de scripts (JavaScript), et l’informatique pure (Java, C#, ou C++) dans une infrastructure unifiée. Curl est utilisé par de nombreuses applications internes aux entreprises (B2B et B2C).

Curl est un langage de balisage comme le HTML, c’est-à-dire que le texte brut s’affiche en tant que texte ; il inclut également un langage de programmation orientée objet qui permet l’héritage multiple. Les applications Curl ne sont pas tenues de respecter les séparations d’informations, de styles et de comportements contrairement au HTML, aux CSS et au JavaScript, bien que ce type de programmation puisse être utilisé en Curl si l’utilisateur le souhaite.

Alors que le langage Curl peut être utilisé comme remplaçant du HTML pour metttre en forme du texte formaté, il dispose de nombreuses caractéristiques typiques d’un langage de programmation orientée objet[2]. La création (au niveau du HTML) et les structures de programmation de Curl peuvent être étendues au code utilisateur. Le langage est conçu de manière à ce que les applications en Curl puissent être compilées dans le code cible de l’ordinateur client par un système de compilation à la volée et être exécutées à grande vitesse.

Les applets Curl peuvent être affichés via un moteur d’exécution Curl, un environnement d’exécution qui dispose de plugins pour navigateurs web. Actuellement, Curl est supporté par Microsoft Windows, Linux, et Mac OS X.

Curl a, pendant plusieurs années, disposé d’une fonctionnalité pour applets détachés, applets qui s’exécutent sur le bureau de l’utilisateur et ne nécessitent pas fenêtre de navigation. Ce fonctionnement est similaire à celui de de Silverlight et d’Adobe AIR. Les applets Curl peuvent aussi être écrits de manière à ce qu’ils puissent s’exécuter en mode hors-ligne, lorsque l’ordinateur est déconnecté du réseau. Par exemple, Curl IDE est une application codée en Curl.

Syntaxe[modifier | modifier le code]

Voici un exemple simple d’applet Curl pour Hello World

 {Curl 7.0, 8.0 applet}
 {text
    color = "blue",
    font-size = 16pt,
    Hello World}

Cet applet s’exécute si l’utilisateur a installé au moins l’une des versions de Curl spécifiées en début de code (ici 7.0 et/ou 8.0).

Curl propose également à l’utilisateur des macros et des procédures, ainsi que des procédures de type anonyme et des méthodes nommées. À l’aide de la procédure « paragraphe », on pourrait proposer cette alternative pour Hello World :

 {paragraph
    paragraph-left-indent=0.5in,
    {text color = "red", font-size = 12pt,
      Hello}
    {text color = "green", font-size = 12pt,
      World}}

Récemment, ce type de structure a été adopté par les programmeurs en Groovy pour une utilisation des programmes par JVM. Toutefois, cette structure est également familière aux utilisateurs de CSS ou de Tcl/Tk. La plupart des fonctionnalités pour applications web désormais mises en œuvre par des combinaisons de librairies JavaScript + HTML + CSS sont déjà disponibles dans le langage Curl, y compris les fonctionnalités habituellement associées à Prototype + script.aculo.us.

Curl fixe les rappels dans un programme de la même manière que Groovy :

 {CommandButton width=100pt,
    height = 50pt,
    label = {center {bold Invokes an event handler when clicked}},
    control-color = "orange",
    || Attach the following event handler to this CommandButton
    {on Action do
        {popup-message
            title = "Your Message",
            "This is a user message dialog."
        }
    }}

Les commentaires dans Curl utilisent la barre verticale, parfois de différentes manières. Voici la plus classique :

 {text A comment can be on a line by itself,
 || A comment on a line by itself
 or it can be at the end || A comment on the same line as code
 of a line.}

Curl : langage de balisage léger[modifier | modifier le code]

Comme Curl offre à l’utilisateur la possibilité de définir lui-même des procédures et des feuilles de styles, il peut être aisément utilisé en tant que langage de balisage léger spécialisé. Un avantage majeur dont il dispose par rapport au balisage HTML en texte brut est que, même si l’encodage de départ est l’UTF-8, le texte peut être entré dans un éditeur, qui dispose du standard Unicode activé, sans perte de caractère (tout comme le JavaScript, Curl est compatible à Unicode). Un exemple :

 {poem || wraps entire poem
    {stanza  || first verse here in any language
    }
    {stanza  || another verse here in any language
    }
 }

Ce poème peut être mis en forme en définissant les balises « poem » et « stanza » comme formats de paragraphe. La balise « Stanza » pourrait également être modifiée et inclure une ancre de navigation cachée en utilisant la procédure Curl {destination}, qui est elle-même une procédure.

Une même balise peut être utilisée pour obtenir différents résultats : elle peut rendre le texte visible dans un certain contexte, et le rendre invisible dans un autre. Curl permet aussi une inclusion de fichier de haut niveau, afin qu’un texte source balisé puisse être inclus dans différents fichiers parents. En contexte universitaire, par exemple, il serait possible de créer le fichier source d’un questionnaire, et d’inclure deux versions : une pour l’étudiant et une pour le professeur.

Notes et références[modifier | modifier le code]

  1. (en) curl - Copyright
  2. M. Hostetter, D. Kranz, C. Seed, C. Terman, S. Ward, « Curl: A Gentle Slope Language for the Web », MIT Laboratory for Computer Science

Voir aussi[modifier | modifier le code]

  • Homoiconicité: Curl est un langage de programmation et une structure de données.

Liens externes[modifier | modifier le code]