GET und POST mit AppleScript

Für komplexe Automatisierungen reicht es meistens nicht, nur clientseitig oder nur serverseitig an die Lösung heranzugehen. Daten müssen serverseitig z.B. durch Datenbanken zusammengestellt werden oder es müssen auf dem Server abgelegte Files ausgelesen werden. Für mich gibt es noch einen ganz entscheidenden Grund oft zweigleisig zu fahren: AppleScript ist in vielen Belangen einfach nicht leistungsfähig genug: Regular Expressions, Datumsberechnungen, komplexe Vergleiche wie ein Fuzzy-Vergleich, … kann man mit serverseitigem Scripten viel einfacher realisieren.

Bei meinen Automatisierungen gehe ich sogar ganz bewusst den Weg, dass ich alles, was ich irgendwie auf dem Server erledigen kann, dort auch tue und erst am Ende die Daten mit AppleScript feintune. Eine Textaufbereitung für einen Zeitungsartikel kann man sehr schnell und komfortabel mit einem Serverscript durchführen, wenn es aber darum geht, den Artikel in eine vorgegebene Text Box in QuarkXpress exakt einzusetzen, dann verwende ich AppleScript. Nur durch die direkte Kommunikation mit dem Layoutprogramm kann ich den Textfluss ermitteln, der sich z.B. aus den eingestellten Silben- und Blocksatzregeln ergibt.

Wie kommuniziert man also von AppleScript mit einem serverseitigem Script? Hier hilft das leistungsfähige cURL, eine kurze, deutschsprachige Erklärung findet sich bei Wikipedia. „cURL und AppleScript? Das hört sich nach ‚do shell script‘ an.“, genau!

Übertragung per GET

Sie übergeben einfach an cURL die gesamte URL zum serverseitigem Script mit allen angehangenen Variablen, also genauso als würden sie die URL im Browser aufrufen. Beachten sie, dass cURL kein ‚URL encoding‘ vornimmt, das müssen sie schon selber vorher erledigen. In der Variablen ‚ReturnValue‘ steht nach erfolgtem Aufruf das, was der Server nach Aufruf der URL ausgegeben hat. Das ‚-s‘ steht für ’silent‘ und sorgt dafür, dass cURL keine Fehler- oder Statusmeldung ausgibt.

Übertragung per POST

Der erste Teil der cURL-Anweisung ist identisch mit der bei der Übertragung per GET: Sie rufen die URL so auf, wie Sie es auch in der klassischen Formularverarbeitung machen würden, Sie rufen also das Formular verarbeitende und NICHT das Formular erzeugende Script auf.

Danach, also ab dem Parameter ‚-d‘, der übrigens für ‚data‘ steht, übermitteln Sie alle Bezeichner und die dazugehörigen Werte wie sie im Formular definiert sind. Vergessen Sie dabei nicht, auch den Wert des Absendebuttons anzugeben. Wenn in Ihrem Formular ein Input-Feld ‚Autokennzeichen‘ heißt und Sie den Wert ‚HH‘ an den Server übergeben wollen, der Absendebutton den Wert ’suchen‘ hat, dann schreiben Sie:

-d ‚Autokennzeichen=HH&press=suchen

Denken Sie auch hier an die richtige Kodierung, AppleScript benutzt in der aktuellen Version Unicode.

Mit cURL lassen sich noch eine ganze Reihe von anderen Dingen realisieren, in der man page oder im Terminal: ‚man curl‘ sind alle Parameter beschrieben.

AppleScript, Automatisierung, Coding, PHP, Webapplication, Webentwicklung