Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | added an example for suspensions |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
e9f3970674c14a09e69bf726aaa51183 |
User & Date: | murphy 2011-09-23 21:26:50.408 |
Context
2011-09-25
| ||
01:51 | suspended resource and error handling tweaks check-in: e657ff967b user: murphy tags: trunk | |
2011-09-23
| ||
21:26 | added an example for suspensions check-in: e9f3970674 user: murphy tags: trunk | |
21:24 | included an explicit return in the request handler continuation check-in: 7b68b3ded9 user: murphy tags: trunk | |
Changes
Changes to example.scm.
︙ | ︙ | |||
25 26 27 28 29 30 31 32 33 34 35 | (require-library webgate) (import webgate (only webgate-utils uri-encode)) (define-resource (root parameters) (make-html-response 200 `(html | > > > > > > > > > | < < < < < | > > > > | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | (require-library webgate) (import webgate (only webgate-utils uri-encode)) (define common-head '(head (meta ((charset "utf-8"))) (title "WebGate") (meta ((name "description") (content "CHICKEN WebGate example"))) (meta ((name "author") (content "Thomas Chust"))) (link ((rel "stylesheet") (href "http://twitter.github.com/bootstrap/1.3.0/bootstrap.min.css"))) (style ((type "text/css")) "body{padding-top:60px}"))) (define-resource (root parameters) (make-html-response 200 `(html ,common-head (body (div ((class "topbar")) (div ((class "fill")) (div ((class "container")) (a ((class "brand") (href "#")) "WebGate") (ul ((class "nav")) (li ((class "active")) (a ((href "#")) "Miscellaneous")) (li (a ((href ,(resource-uri calc "add"))) "Suspensions")))))) (div ((class "container")) (div ((class "hero-unit")) (h1 "Application Example") (p "This sample program just shows some information extracted from the incoming request.")) (div |
︙ | ︙ | |||
183 184 185 186 187 188 189 190 | (div ((class "actions")) (input ((type "submit") (class "btn primary") (value "Submit"))) nbsp (input ((type "reset") (class "btn") (value "Reset")))))))) (footer copy "2011 by Thomas Chust")))))) (webgate-main) | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 | (div ((class "actions")) (input ((type "submit") (class "btn primary") (value "Submit"))) nbsp (input ((type "reset") (class "btn") (value "Reset")))))))) (footer copy "2011 by Thomas Chust")))))) (define (numeric-parameter parameters key) (cond ((hash-table-ref/default parameters key #f) => (lambda (msgs) (and (not (null? msgs)) (string->number (message-body (car msgs)))))) (else #f))) (define-resource (calc "calc" op parameters) (if (string=? op "add") (let* ((common-topbar `(div ((class "topbar")) (div ((class "fill")) (div ((class "container")) (a ((class "brand") (href "#")) "WebGate") (ul ((class "nav")) (li (a ((href ,(resource-uri root))) "Miscellaneous")) (li ((class "active")) (a ((href "#")) "Suspensions"))))))) (parameters (send/suspend (lambda (resume-uri) (make-html-response 200 `(html ,common-head (body ,common-topbar (div ((class "container")) (form ((method "GET") (action ,resume-uri)) (fieldset (legend "Add Numbers") (div ((class "clearfix")) (label ((for "a")) "First Summand") (div ((class "input")) (input ((type "text") (id "a") (class "medium") (name "a") (size "30"))))) (div ((class "clearfix")) (label ((for "a")) "Second Summand") (div ((class "input")) (input ((type "text") (id "b") (class "medium") (name "b") (size "30"))))) (div ((class "actions")) (input ((type "submit") (class "btn primary") (value "Submit"))) nbsp (input ((type "reset") (class "btn") (value "Reset"))))))))))))) (a (or (numeric-parameter parameters "a") 0)) (b (or (numeric-parameter parameters "b") 0))) (make-html-response 200 `(html ,common-head (body ,common-topbar (div ((class "container")) (div ((class "hero-unit")) (h1 ,(number->string (+ a b))) (p hellip "is the answer"))))))) (make-error-response 400 "Don't know how to perform the requested calculation."))) (webgate-main) |