[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

URL structs in cgi^ script



I would like to be able to access the members of a struct from within a cgi^
script. The problem is that the url struct procedures don't work the way I
expect.
(I'm using DrScheme v.103)

Here's one of many attempts to get this to work (file: test4.cgi):

(require-library "web-servers.ss" "server")

(define test@
  (unit/sig ()
    (import [url : mzlib:url^] [cgi : cgi^])

    `(html (head (title "Test"))
           (body (h1 "This is test4.cgi")
                 (h2 ,(format "uri: ~s" (struct->vector cgi:uri)))
                 (h3 ,(format "query: ~s" (url:url? cgi:uri)))))))

(compound-unit/sig
  (import (cgi : cgi^))
  (link
   [STRING   : mzlib:string^   ((require-library-unit/sig "stringr.ss"))]
   [FUN      : mzlib:function^ ((require-library-unit/sig "functior.ss"))]
   [FILE     : mzlib:file^     ((require-library-unit/sig "filer.ss") STRING
FUN)]
   [URL      : mzlib:url^      ((require-library-unit/sig "urlr.ss" "net")
FILE)]
   [BASE64   : mzlib:base64^   ((require-library-unit/sig "base64r.ss"
"net"))]
   [XML      : xml^            ((require-library-unit/sig "xmlr.ss" "xml")
FUN)]
   [B        : ()              (test@ URL cgi)])
  (export))

Here's the resulting HTML from my browser:

<html>
 <head><title>Test</title></head>
 <body>
  <h1>This is test4.cgi</h1>
  <h2>uri: #8(struct:url #f #f #f "/cgi-bin/test4.cgi" #f
"these?are?the?args" #f)</h2>
  <h3>query: #f</h3>
 </body>
</html>

I would expect (url:url? cgi:uri) --> #t