[more work on refactoring Jeremy Shaw **20110308231030 Ignore-this: 7f3a7a4229086a8f590b90752cee4dfe ] hunk ./Pages/AppTemplate.hs 14 +import qualified HSX.XMLGenerator as HSX hunk ./Pages/AppTemplate.hs 21 - ( EmbedAsChild (RouteT url (ServerPartT IO)) headers - , EmbedAsChild (RouteT url (ServerPartT IO)) body - , EmbedAsAttr (RouteT url (ServerPartT IO)) (Attr String String) + ( Happstack m + , XMLGenerator m + , EmbedAsChild m headers + , EmbedAsChild m body + , EmbedAsAttr m (Attr String String) hunk ./Pages/AppTemplate.hs 30 - -> XMLGenT (RouteT url (ServerPartT IO)) XML + -> XMLGenT m (HSX.XML m) hunk ./Pages/AppTemplate.hs 44 - ( EmbedAsChild (RouteT url (ServerPartT IO)) headers - , EmbedAsChild (RouteT url (ServerPartT IO)) body - , EmbedAsAttr (RouteT url (ServerPartT IO)) (Attr String String) + ( Happstack m + , ToMessage (HSX.XML m) + , XMLGenerator m + , EmbedAsChild m headers + , EmbedAsChild m body + , EmbedAsAttr m (Attr String String) hunk ./Pages/AppTemplate.hs 54 - -> RouteT url (ServerPartT IO) Response + -> m Response hunk ./Pages/Login.hs 38 -loginPage :: XMLGenT (RouteT AuthURL (ServerPartT IO)) XML +loginPage :: (XMLGenerator m, EmbedAsAttr m (Attr String AuthURL)) => XMLGenT m (HSX.XML m) hunk ./Pages/Login.hs 48 -addAuthPage :: XMLGenT (RouteT AuthURL (ServerPartT IO)) XML + +addAuthPage :: (XMLGenerator m, EmbedAsAttr m (Attr String AuthURL)) => XMLGenT m (HSX.XML m) hunk ./Pages/Login.hs 78 -providerPage :: OpenIdProvider -> ProviderPage (RouteT (OpenIdURL p) (ServerPartT IO)) p +providerPage :: (Happstack m, ShowURL m, URL m ~ OpenIdURL p, ToMessage (HSX.XML m), XMLGenerator m, EmbedAsChild m (), Alternative m) => OpenIdProvider -> ProviderPage m p hunk ./Pages/Login.hs 99 -liveJournalPage :: OpenIdURL p +liveJournalPage :: (Happstack m, XMLGenerator m, ToMessage (HSX.XML m), EmbedAsChild m (), Alternative m, ShowURL m, URL m ~ (OpenIdURL p)) => + OpenIdURL p hunk ./Pages/Login.hs 102 - -> RouteT (OpenIdURL p) (ServerPartT IO) Response + -> m Response hunk ./Pages/Login.hs 114 - handleSuccess :: String -> XMLGenT (RouteT (OpenIdURL p) (ServerPartT IO)) Response +-- handleSuccess :: String -> XMLGenT (RouteT (OpenIdURL p) (ServerPartT IO)) Response hunk ./Pages/Login.hs 119 -handleFailure :: [(FormRange, String)] - -> [XMLGenT (RouteT (OpenIdURL p) (ServerPartT IO)) (HSX.XML (RouteT (OpenIdURL p) (ServerPartT IO)))] - -> XMLGenT (RouteT (OpenIdURL p) (ServerPartT IO)) Response +handleFailure :: (XMLGenerator m, Happstack m, EmbedAsChild m (), ToMessage (HSX.XML m)) => + [(FormRange, String)] + -> [XMLGenT m (HSX.XML m)] + -> XMLGenT m Response hunk ./Pages/Logout.hs 6 +import Control.Applicative(Alternative(..)) hunk ./Pages/Logout.hs 11 +import qualified HSX.XMLGenerator as HSX hunk ./Pages/Logout.hs 15 - -logoutPage :: RouteT AuthURL (ServerPartT IO) Response +logoutPage :: (XMLGenerator m, Alternative m, Happstack m, ShowURL m, URL m ~ AuthURL, EmbedAsAttr m (Attr String AuthURL)) => XMLGenT m (HSX.XML m) hunk ./Pages/Logout.hs 18 - appTemplate "Logout" () -

You are now logged out. Click here to log in again.

+

You are now logged out. Click here to log in again.

hunk ./demo.hs 1 -{-# LANGUAGE DeriveDataTypeable, FlexibleInstances, MultiParamTypeClasses, TemplateHaskell, TypeFamilies, TypeOperators #-} +{-# LANGUAGE DeriveDataTypeable, FlexibleContexts, FlexibleInstances, MultiParamTypeClasses, TemplateHaskell, TypeFamilies, TypeOperators #-} hunk ./demo.hs 8 -import Control.Monad (msum, mzero) +import Control.Monad (liftM, msum, mzero) hunk ./demo.hs 13 +import Happstack.Server.HSP.HTML (defaultTemplate) hunk ./demo.hs 15 -import Pages.AppTemplate +import qualified HSX.XMLGenerator as HSX +-- import Pages.AppTemplate hunk ./demo.hs 31 +defaultTemplate' t h b = liftM toResponse (defaultTemplate t h b) + hunk ./demo.hs 102 - nestURL U_Auth $ handleAuth providerPage realm onAuthURL auth - (U_Profile profile) -> nestURL U_Profile $ handleProfile profile - -handleAuth :: (OpenIdProvider -> ProviderPage (RouteT (OpenIdURL OpenIdProvider) (ServerPartT IO)) OpenIdProvider) -> Maybe String -> String -> AuthURL -> RouteT AuthURL (ServerPartT IO) Response -handleAuth providerPage realm onAuthURL url = + nestURL U_Auth $ handleAuth defaultTemplate' providerPage realm onAuthURL auth + (U_Profile profile) -> nestURL U_Profile $ handleProfile defaultTemplate' profile +{- +handleAuth :: ( Happstack m + , XMLGenerator m + , EmbedAsChild m () + , EmbedAsAttr m (Attr String AuthURL) + , ToMessage (HSX.XML m) + , Alternative m + , ShowURL m + , URL m ~ AuthURL + ) => + (OpenIdProvider -> (OpenIdURL p) -> AuthMode -> n Response) -- -> ProviderPage n OpenIdProvider) + -> Maybe String + -> String + -> AuthURL + -> m Response +-} +handleAuth appTemplate providerPage realm onAuthURL url = hunk ./demo.hs 124 - A_Logout -> logoutPage + A_Logout -> appTemplate "Logout" () logoutPage hunk ./demo.hs 127 - -handleProfile :: ProfileURL -> RouteT ProfileURL (ServerPartT IO) Response -handleProfile url = +-- handleProfile :: ProfileURL -> RouteT ProfileURL (ServerPartT IO) Response +handleProfile appTemplate url =