L'utilisation d'AppleScript avec MacHTTP

par David Anguish, SIC-Assistance

Ce texte a été écrit pour répondre à des questions sur le produit MacHTTP. Il décrit les méthodes qui sont à votre disposition pour permettre à MacHTTP (serveur WWW sur Macintosh) de communiquer avec les applications AppleScript. AppleScript permet le contrôle du Mac sans l'intervention directe du clavier ou de la souris. Les scripts, en général, sont très utiles pour effectuer par exemple les tâches répétitives, ou pour faire communiquer deux applications entre elles. Ils peuvent être lancés manuellement ou bien sous le contrôle de certaines applications comme c'est le cas avec MacHTTP.

Le Serveur Macintosh World-Wide Web: MacHTTP

MacHTTP est issu de l'Université du Texas, Houston, et c'est le nom attribué au logiciel serveur WWW pour Mac. Ce produit fonctionne avec le produit AppleScript et, en conséquence, est capable d'exécuter des scripts qui fournissent aux clients WWW des documents html (format hypertext). Ce produit serveur est compatible avec les clients WWW sur plate-forme Unix et PC.

Les conditions de fonctionnement

Le serveur MacHTTP consomme peu de resources CPU ou mémoire. 1 Mega byte d'espace mémoire suffit pour une configuration de base - 16, voire 20 Mega, sont recommandés si on s'attend à recevoir beaucoup de requêtes ou au lancement d'applications en parallèle. Tous les filesystems, soit montés à l'aide d'AppleTalk soit locaux, sont accessibles par le serveur.

A l'aide du fichier d'extension AppleScript, certains services du Mac sont mis à la disposition des clients WWW. Ces services sont comparables à ceux offerts sur un serveur Unix WWW comme la facilité de recherche Searchable (voir ci-après) et les clickable maps. Pour assurer la fonctionnalité correcte de ces scripts il est obligatoire d'installer préalablement les outils Script Tools OSAX dans le dossier Extensions Scripting Additions. Le logiciel du type fat binary fonctionne avec MacOS version 7 à l'aide de MacTCP sur les gammes Mac 68K et PowerPC.

La distribution des documents par le serveur

MacHTTP est compatible avec les serveurs HTTP sur plate-forme Unix. C'est à dire que l'ensemble des documents html, y compris les références des fichiers, liens, ancres et conventions de noms, sont compatibles. Ceci permet à tous les clients WWW quelque soit la plate-forme, de communiquer avec MacHTTP.

Interprétation par MacHTTP des fichiers particuliers

Fichiers Textes

Malheureusement les fichiers Mac du type texte ne correspondent pas aux normes standard. C'est pour cette raison que tous les fichiers qui portent les extensions .html ou .text, doivent être reconvertis avant d'être expédiés aux clients. La modification des fichiers de ce type consiste à ajouter / à la fin de chaque ligne de texte. En ce qui concerne les caractères composés qui figurent dans les textes html, il est nécessaire de les réaliser en précisant certain mots clés (grave, acute, circ etc), encapsulés par les caractères «&» et «;». Par exemple «à» est représenté par «à», «é» par «é», «ô» par «ô» etc.

Fichiers Binaires

Les fichiers de type binaire (ex image.gif) sont expédiés sans modification.

Fichiers Applications

Les fichiers de type application, qui ont les extensions .exe ou .cgi (Common Gateway Interface), sont lancés sous le contrôle direct de MacHTTP. Ce dernier transfère les arguments nécessaires à l'application qui, à son tour, fait revenir ses résultats, normalement sous forme de document html généré. L'échange d'informations entre MacHTTP et l'application s'effectue grâce à la méthode de communication système AppleEvents. A noter: Les paramètres d'échange valables entre applications sont contenus dans leurs ressources «aete»(dictionnaire Apple Script). Le contenu des dictionnaires peut être dévoilé à l'aide de l'outil ScriptEditor.

Fichiers Scripts

Ce type de fichiers a l'extension .script. Ces fichiers sont lancés et mis sous le contrôle d'AppleScript. Le système de passage de contrôle entre MacHTTP et AppleScript est identique aux fichiers de type applications.

La figure 2 montre un script qui permet l'enregistrement du paramètre MacHTTP

«http_search_args» directement à partir du client WWW. Le tag html est nécessaire pour indiquer que le document est searchable et il demande au client d'afficher le menu correspondant. L'instruction de commande return oblige MacHTTP à faire revenir le document html contenu dans le script.

Le menu

s'affiche sur l'écran du client et permet un échange d'informations (figure 1) entre le client et le serveur, via MacHTTP.

figure 1

Protocole WWW

Concernant le passage du code html entre script et client (voir diagramme en figure 1), il est important de savoir que MacHTTP n'encode rien au passage. Mis à part certains redressements minimes qu'exécute le serveur, le client reçoit exactement le texte html comme formulé dans le script (ou application cgi). Le script doit alors obligatoirement contenir les en-têtes dont a besoin le protocole WWW; cette situation va certainement changer d'ici peu (figure 3).

Au passage, il est recommandé de construire vos scripts par couches; les documents html ont besoin eux aussi d'être traités de cette façon ­en-tête, corps et pied de page­ (voir figure 4).

AppleEvents

Le système 7 MacOS a fait beaucoup évoluer le concept d'events. Auparavant, les applications ne pouvaient recevoir que les événements à bas niveau, par exemple: bouton de touche activé ou souris cliquée. Grâce au système 7, les applications sont capables de réagir en fonction d'événements programmés. Nommé AppleEvents, ce système comporte un ensemble d'events standards à haut niveau. Le Finder l'utilise pour communiquer avec les applications (ex ouvrir les documents, imprimer les documents et quit). D'autres ensembles standards AppleEvents couvrent les domaines graphiques et les manipulations de textes.

Applications MacHTTP

Pour reconvertir les scripts en applications, il suffit de déclarer un handler AppleEvents. Suite à un appel client WWW du type query (GET), qui demande l'ouverture d'un fichier d'extension .exe ou .cgi (application), le serveur MacHTTP entrera en communication avec l'application via l'un des AppleEvents particuliers srch ou sdoc. En bref, les applications AppleScript qui contiennent un handler avec la ligne:

on <> http_search_args

seront lancées par MacHTTP et, en conséquence, le paramètre

«http_search_args» correctement spécifié. Dans notre exemple en figure 5, le script se trouve encapsulé ainsi. Une fois compilé, ce script fonctionnera en tant qu'application.

Le passage des arguments entre MacHTTP et Script/Application

En Format URL L'alternative à la méthode est de faire passer les valeurs correspondantes «http_ search_args» directement dans l'url, délimité par le caractère «?» par exemle dans l'url suivant: http://samac7/sample.exe?Hello. L'utilisation de l'événement sdoc, par contre, oblige l'utilisation de la syntaxe modifiée comme suit: http://samac7/sample.cgi$ fichier?un+deux+trois, à noter: la syntaxe de cette ligne s'approche plus près de celle utilisée sur la plate-forme equivalente Unix. Dans ce cas, le texte «fichier» (délimité par les caractères $ et ?), est attribué au paramètre path_args et http_search_ args prend la valeur un+deux+trois (on peut concevoir, par exemple, que la partie texte un+deux+trois, suite à la reconversion un, deux, trois, soit disposée à devenir les index pour obtenir certaines informations dans le fichier).

Formulaires (forms)

Les formulaires permettent à la fois la présentation de documents de type html et la saisie d'informations. Cela permet également d'automatiser la création d'url. La référence aux applications est également admise dans les documents html. Il suffit d'envelopper l'html dans le document avec le tag
comme le montre la figure 6.

Dans notre exemple (figure 7), en cliquant sur le bouton «Soumettre vos réponses», MacHTTP entre en communication avec l'application en créant automatiquement l'url suivant:

«http://abcmacx/application. cgi?Catégories:=Seniors+ Catégories:= Vétérans»

L'information sur les catégories contenue dans cette requête est passée au paramètre d'événement «http_search_args», voir le script de la figure 8. C'est une application qui correspond aux événements sdoc. Elle est capable d'enregistrer le choix des catégories Minis, Garçons + Filles, etc sélectionnées dans un fichier texte sur le serveur.

Documents html dynamiques

Pour terminer, on voit en figure 9 un script qui prépare un document html on the fly. En renvoyant l'html approprié, le serveur est capable d'afficher chez le client WWW la liste actualisée des fichiers d'un répertoire:

Conclusion

En plus des innombrables documents WWW que vous trouverez sur Internet, vous pouvez également consulter le fichier «Read Me» dans le répertoire MacHTTP sur Cyclope. Pour vos problèmes de syntaxe AppleScript, je vous propose les documents hypercard, y compris les exemples, mis à votre disposition sur disques CD Rom, Cyclope. Certaines éléments que vous trouvez dans ce texte sont mis en application sur un serveur expérimental: «http://macline/test.html» .


article paru dans le Flash informatique no 7 du 27 septembre 1994