1 ! Copyright (C) 2008 Chris Double. All Rights Reserved.
14 http.server.dispatchers
29 TUPLE: fjsc < dispatcher ;
31 : absolute-url ( url -- url )
32 "http://" request get "host" header append
33 over "/" head? [ "/" append ] unless
36 : <javascript-content> ( body -- content )
37 "application/javascript" <content> ;
39 : do-compile-url ( url -- response )
41 absolute-url http-get nip 'expression' parse
42 fjsc-compile write "();" write
44 <javascript-content> ;
46 : v-local ( string -- string )
47 dup "http:" head? [ "Unable to compile code from remote sites" throw ] when ;
49 : validate-compile-url ( -- )
51 { "url" [ v-required v-local ] }
54 : <compile-url-action> ( -- action )
56 [ validate-compile-url ] >>validate
57 [ "url" value do-compile-url ] >>submit
58 [ validate-compile-url "url" value do-compile-url ] >>display ;
60 : do-compile ( code -- response )
62 'expression' parse fjsc-compile write
64 <javascript-content> ;
66 : validate-compile ( -- )
68 { "code" [ v-required ] }
71 : <compile-action> ( -- action )
73 [ validate-compile ] >>validate
74 [ "code" value do-compile ] >>submit
75 [ validate-compile "code" value do-compile ] >>display ;
77 : <main-action> ( -- action )
79 { fjsc "main" } >>template ;
82 dispatcher new-dispatcher
83 "extra/webapps/fjsc/www" resource-path <static> "static" add-responder
84 "extra/fjsc/resources" resource-path <static> "fjsc" add-responder
86 <main-action> "" add-responder
87 <compile-action> "compile" add-responder
88 <compile-url-action> "compile-url" add-responder
90 { fjsc "fjsc" } >>template
93 : activate-fjsc ( -- )
94 <fjsc> main-responder set-global ;