Paste: the code

Author: slava
Mode: factor
Date: Tue, 23 Sep 2008 06:18:03
Plain Text |
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: furnace.actions furnace.redirection
http.server.dispatchers html.forms validators urls accessors
math ;
IN: webapps.calculator

TUPLE: calculator < dispatcher ;

: <calculator-action> ( -- action )
    <page-action>

    [
        { { "z" [ [ v-number ] v-optional ] } } validate-params
    ] >>init

    { calculator "calculator" } >>template

    [
        {
            { "x" [ v-number ] }
            { "y" [ v-number ] }
        } validate-params

        URL" $calculator" "x" value "y" value + "z" set-query-param
        <redirect>
    ] >>submit ;

: <calculator> ( -- responder )
    calculator new-dispatcher
        <calculator-action> >>default ;

! Deployment example
USING: db.sqlite furnace.alloy namespaces http.server ;

: calculator-db ( -- params db ) "counter.db" sqlite-db ;

: run-calculator ( -- )
    <calculator>
        calculator-db <alloy>
        main-responder set-global
    8080 httpd ;

MAIN: run-calculator

New Annotation

Summary:
Author:
Mode:
Body: