implement Testcgi; include "sys.m"; sys: Sys; print: import sys;include "draw.m";include "cgi.m"; cgi: Cgi; Fields: import cgi; Testcgi: module { init: fn(nil: ref Draw->Context, nil: list of string);}; init(nil: ref Draw->Context, args: list of string){ sys = load Sys Sys->PATH; cgi = load Cgi Cgi->PATH; if(cgi == nil) nomod(Cgi->PATH); cgi->init(); if(len args != 2) { sys->fprint(sys->fildes(2), "usage: testcgi querystring\n"); raise "fail:usage"; } args = tl args; print("=== unpack\n"); qs := hd args; f := cgi->unpack(qs); for(p := f.all(); p != nil; p = tl p) { (k, v, nil) := hd p; print("have %s=%s\n", k, v); } print("get: %s=%s\n", "wordfile", f.get("wordfile")); print("getdefault(oink): %s=%s\n", "blah", f.getdefault("blah", "oink")); print("getlist: %s -> len %d\n", "blah", len f.getlist("blah")); l: list of (string, string); for(fl := f.l; fl != nil; fl = tl fl) l = ((hd fl).t0, (hd fl).t1)::l; qs2 := cgi->pack(l); print("qs=%q qs2=%q\n", qs, qs2); print("=== unpackenv\n"); f = cgi->unpackenv(); if(f == nil) return; for(p = f.all(); p != nil; p = tl p) { (k, v, nil) := hd p; print("%s = %s\n", k, v); }} nomod(m: string){ sys->fprint(sys->fildes(2), "loading %s: %r\n", m); raise "fail:load";}
implement Testcgi;
include "sys.m";
sys: Sys;
print: import sys;
include "draw.m";
include "cgi.m";
cgi: Cgi;
Fields: import cgi;
Testcgi: module {
init: fn(nil: ref Draw->Context, nil: list of string);
};
init(nil: ref Draw->Context, args: list of string)
{
sys = load Sys Sys->PATH;
cgi = load Cgi Cgi->PATH;
if(cgi == nil)
nomod(Cgi->PATH);
cgi->init();
if(len args != 2) {
sys->fprint(sys->fildes(2), "usage: testcgi querystring\n");
raise "fail:usage";
}
args = tl args;
print("=== unpack\n");
qs := hd args;
f := cgi->unpack(qs);
for(p := f.all(); p != nil; p = tl p) {
(k, v, nil) := hd p;
print("have %s=%s\n", k, v);
}
print("get: %s=%s\n", "wordfile", f.get("wordfile"));
print("getdefault(oink): %s=%s\n", "blah", f.getdefault("blah", "oink"));
print("getlist: %s -> len %d\n", "blah", len f.getlist("blah"));
l: list of (string, string);
for(fl := f.l; fl != nil; fl = tl fl)
l = ((hd fl).t0, (hd fl).t1)::l;
qs2 := cgi->pack(l);
print("qs=%q qs2=%q\n", qs, qs2);
print("=== unpackenv\n");
f = cgi->unpackenv();
if(f == nil)
return;
for(p = f.all(); p != nil; p = tl p) {
(k, v, nil) := hd p;
print("%s = %s\n", k, v);
}
}
nomod(m: string)
{
sys->fprint(sys->fildes(2), "loading %s: %r\n", m);
raise "fail:load";
}