]> gitweb.factorcode.org Git - factor.git/blob - extra/webapps/wiki/example/example.factor
webapps.wiki.example: new vocab to show how the wiki webapp should be
[factor.git] / extra / webapps / wiki / example / example.factor
1 USING: accessors calendar db db.sqlite db.tuples furnace.alloy
2 furnace.recaptcha.example http.server io.directories
3 io.encodings.ascii io.files io.files.temp io.servers
4 io.sockets.secure.debug kernel namespaces sequences splitting
5 webapps.wiki websites.concatenative ;
6 IN: webapps.wiki.example
7
8 : wiki-db ( -- db )
9     "wiki.db" temp-file <sqlite-db> ;
10
11 : insert-page ( file-name -- )
12     dup ".txt" ?tail [
13         swap ascii file-contents
14         f <revision>
15             swap >>content
16             swap >>title
17             "slava" >>author
18             now >>date
19         add-revision
20     ] [ 2drop ] if ;
21
22 : insert-pages ( -- )
23     "resource:extra/webapps/wiki/initial-content" [
24         [ insert-page ] each
25     ] with-directory-files ;
26
27 : init-wiki-db ( -- )
28     wiki-db [
29         init-furnace-tables
30         article ensure-table
31         revision ensure-table
32         insert-pages
33     ] with-db ;
34
35 : <wiki-app> ( -- dispatcher )
36     <wiki>
37     <test-recaptcha>
38     <login-config>
39     <factor-boilerplate>
40     wiki-db <alloy> ;
41
42 : <wiki-website-server> ( -- threaded-server )
43     <http-server>
44         <test-secure-config> >>secure-config
45         8080 >>insecure
46         8431 >>secure ;
47
48 : run-wiki ( -- )
49     init-wiki-db
50     <wiki-app> main-responder set-global
51     wiki-db start-expiring
52     <wiki-website-server> start-server drop ;
53
54 MAIN: run-wiki