packages feed

MFlow-0.4.5.5: Demos/WebService.hs

module WebService where

import MFlow.Wai.Blaze.Html.All
import MFlow.Forms.WebApi

import Debug.Trace



-- mainRest= runNavigation "apirest" . step $ ask $
restService :: View Html IO ()
restService= do
     op    <- getRestParam
     term1 <- getRestParam
     term2 <- getRestParam
     case (op, term1,term2) of
       (Just  "sum", Just x, Just y) ->  wrender (x + y :: Int) **> stop
       (Just "prod", Just x, Just y) ->  wrender (x * y) **> stop
       _  ->do -- blaze Html
                 h1 << "ERROR. API usage:"
                 h3 << "http://server/apirest/sum/[Int]/[Int]"
                 h3 << "http://server/apirest/prod/[Int]/[Int]"
              ++> stop


--mainService= runNavigation "apikv" . step $ ask $
keyValueService :: View Html IO ()
keyValueService= do
     op <- getRestParam
     term1 <- getKeyValueParam "t1"
     term2 <- getKeyValueParam "t2"
     case (op, term1,term2) of
       (Just  "sum", Just x, Just y) ->  wrender (x + y :: Int) **> stop
       (Just "prod", Just x, Just y) ->  wrender (x * y) **> stop
       _  ->do -- blaze Html
                 h1 << "ERROR. API usage:"
                 h3 << "http://server/apikv/sum?t1=[Int]&t2=[Int]"
                 h3 << "http://server/apikv/prod?t1=[Int]&t2=[Int]"
              ++> stop

--mainParser  = runNavigation "apiparser" . step . asks $
-- or
--mainParser =do
--  addMessageFlows[("apiparser",wstateless  parserService)]
--  wait $ run 80 waiMessageFlow

parserService :: View Html IO ()
parserService=
         do rest "sum"  ; disp $ (+) <$> wint "t1" <*> wint "t2"
     <|> do rest "prod" ; disp $ (*) <$> wint "t1" <*> wint "t2"
     <?> do -- blaze Html
            h1 << "ERROR. API usage:"
            h3 << "http://server/apiparser/sum?t1=[Int]&t2=[Int]"
            h3 << "http://server/apiparser/prod?t1=[Int]&t2=[Int]"
    where
    asks w= ask $ w >> stop
    wint p= wparam p :: View Html IO Int