diff --git a/Mac/Demo/cgi.html b/Mac/Demo/cgi.html new file mode 100644 index 00000000000..3932b2842c6 --- /dev/null +++ b/Mac/Demo/cgi.html @@ -0,0 +1,86 @@ +
+ +
Note that the current setup is very preliminary, and hence +itis probably not wise to base your strategic products on the information +in this document:-) In stead, play with the code here and join the +pythonmac-sig, where +we I would like to have a discussion on a real design for a Mac CGI framework +(preferrably something that will make CGI scripts portable to unix and other +platforms). ++ +
+
+Next, let us have a look at the AE Server framework,
+MiniAEFrame.py.
+This file contains two classes, MiniApplication
and AEServer
.
+MiniApplication is a tiny replacement for FrameWork.Application
,
+suitable if your application does not need windows and such.
+
+
Actually, Framework.Application has a problem for AE Servers, +due to the way it expects to be quit through an exception, and raising an exception +while inside an Apple Event handler is a very bad idea. This will be fixed. ++ +AEServer is a bit of glue that does part of the appleevent decoding for you. You +call
installaehandler
passing it the class and id (4-char strings)
+of the event you have a handler for and the handler callback routine. When the
+appleevent occurs your callback is called with the right arguments. For now,
+your argument names are the 4-char values used internally by Open Scripting,
+eventually there will be a translation similar to what the generated OSA client
+suites provide. + +You can test AEServer by double-clicking it. It will react to the standard +run/open/print/quit OSA commands. If it is running as a normal python script and you +drag a file onto the interpreter the script will tell you what event is got.
+ +
+
+Next, let us have a look at our example CGI scripts. CGI scripts have to be
+applications, so we will have to make an applet as explained in
+example 2. Our applet code,
+cgitest.cgi.py is a rather minimal execfile
+statement. The reason for this is debugging: the real code is in
+realcgitest.py, and this way you do not have
+to run mkapplet again every time you change the code. Rename realcgitest.py
+to cgitest.cgi.py once you are satisfied that it works.
+
+The resource file is not very special, with one exception: since we want to do
+our own appleevent handling we don't want the Python initialization code to
+create argc and argv for use, since this might gobble up any appleevents we are
+interested in. For this reason we have included a 'Popt' resource that disables
+the argv initialization. An easy way to create this resource is to drop
+the .rsrc
file (or the finished applet, if you like) onto
+EditPythonPrefs
and set the "no argv processing" option.
+
+The code itself is actually not too complicated either. We install handlers
+for "open application" and "quit" (stolen from the test code in MiniAEFrame)
+and the "WWW\275"/"sdoc"
event, the event sent on CGI execution.
+The cgi handler pretty-prints the CGI arguments in HTML and returns the whole
+string that is to be passed to the client. The actual parameters passed
+are explained in
+http://www.biap.com/datapig/mrwheat/cgi_params.html.
+
+To test the script drop cgitest.cgi.py
onto mkapplet
,
+move the resulting cgitest.cgi
to somewhere where it is reachable
+by NetPresenz, and point your web browser towards it.