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 : do-compile-url ( url -- response )
38 absolute-url http-get nip 'expression' parse
39 fjsc-compile write "();" write
41 "application/javascript" <content> ;
43 : v-local ( string -- string )
44 dup "http:" head? [ "Unable to compile code from remote sites" throw ] when ;
46 : validate-compile-url ( -- )
48 { "url" [ v-required v-local ] }
51 : <compile-url-action> ( -- action )
53 [ validate-compile-url ] >>validate
54 [ "url" value do-compile-url ] >>submit
55 [ validate-compile-url "url" value do-compile-url ] >>display ;
57 : do-compile ( code -- response )
59 'expression' parse fjsc-compile write
61 "application/javascript" <content> ;
63 : validate-compile ( -- )
65 { "code" [ v-required ] }
68 : <compile-action> ( -- action )
70 [ validate-compile ] >>validate
71 [ "code" value do-compile ] >>submit
72 [ validate-compile "code" value do-compile ] >>display ;
74 : <main-action> ( -- action )
76 { fjsc "main" } >>template ;
79 dispatcher new-dispatcher
80 "extra/webapps/fjsc/www" resource-path <static> "static" add-responder
81 "extra/fjsc/resources" resource-path <static> "fjsc" add-responder
83 <main-action> "" add-responder
84 <compile-action> "compile" add-responder
85 <compile-url-action> "compile-url" add-responder
87 { fjsc "fjsc" } >>template
90 : activate-fjsc ( -- )
91 <fjsc> main-responder set-global ;