x      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwNonexyzxyzxyzNone{{{None&| }~ #| }~ | }~  None4Run a raw spock server on a defined port. If you don't need ) a custom base monad you can just supply  as lift function. |None$Get the original Wai Request object Read a header Read a cookie Get the raw request body Parse the request body as json GParse the request body as json and fails with 500 status code on error Get uploaded files Get all request params oRead a request param. Spock looks in route captures first, then in POST variables and at last in GET variables Like /, but outputs an error when a param is missing Set a response status :Set a response header. Overwrites already defined headers BAbort the current action and jump the next one matching the route Redirect to a given url 2Set a cookie living for a given number of seconds %Set a cookie living until a specific  Send a  ByteString$ as response body. Provide your own  Content-Type ! Send a lazy  ByteString$ as response body. Provide your own  Content-Type "3Send text as a response body. Content-Type will be  text/plain #3Send a text as response body. Content-Type will be  text/plain $Send a file as response %,Send json as response. Content-Type will be application/json &2Send blaze html as response. Content-Type will be  text/html 'Basic authentification ; provide a title for the prompt and a function to validate # user and password. Usage example:  get "/my-secret-page" $ _ requireBasicAuth "Secret Page" (\user pass -> return (user == "admin" && pass == "1234")) $ U do html "This is top secret content. Login using that secret code I provided ;-)"  !"#$%&'  !"#$%&' !"#$%&' None(Run a digestive functors form ( form name (( None *DSafeActions are actions that need to be protected from csrf attacks +0The body of the safe action. Either GET or POST 0TGive you access to a database connectin from the connection pool. The connection is 9 released back to the pool once the function terminates. 1Read the application'6s state. If you wish to have mutable state, you could  use a  from the STM packge. Get the session manager 3&Configuration for the session manager 9RYou can feed Spock with either a connection pool, or instructions on how to build  a connection pool. See < <NThe ConnBuilder instructs Spock how to create or close a database connection. AGIf Spock should take care of connection pooling, you need to configure  it depending on what you need. FCThe SpockAction is the monad of all route-actions. You have access 9 to the database, session and state of your application. BInside the SpockAllM monad, you may define routes and middleware. E)*+,-./0123456789:;<=>?@ABCDEFB)*+,-./0123456789:;<=>?@ABCDEF )*+,-./0123456789;:<=>?@ABCDEF NoneGJRead the heart of Spock. This is useful if you want to construct your own 3 monads that work with runQuery and getState using  runSpockIO HXRun an action inside of Spocks core monad. This allows you to use runQuery and getState GHGH GH None None]Run a spock application using the warp server, a given db storageLayer and an initial state. S Spock works with database libraries that already implement connection pooling and  with those that don'0t come with it out of the box. For more see the 9 type. NoneQ]Run a spock application using the warp server, a given db storageLayer and an initial state. S Spock works with database libraries that already implement connection pooling and  with those that don'0t come with it out of the box. For more see the 9 type. R9Run a raw spock application with custom underlying monad S)Convert a Spock-App to a wai-application T6Specify an action that will be run when the HTTP verb  and the given route match U6Specify an action that will be run when the HTTP verb  and the given route match V6Specify an action that will be run when the HTTP verb  and the given route match W6Specify an action that will be run when the HTTP verb  and the given route match X6Specify an action that will be run when the HTTP verb  and the given route match Y6Specify an action that will be run when the HTTP verb  and the given route match ZNSpecify an action that will be run when a HTTP verb and the given route match \Hook wai middleware into Spock ]JWrite to the current session. Note that all data is stored on the server. 6 The user only reciedes a sessionId to be identified. ^Modify the stored session _Read the stored session `NGlobally delete all existing sessions. This is useful for example if you want ! to require all users to relogin aHWire up a safe action: Safe actions are actions that are protected from  csrf attacks. Here's a usage example:  G newtype DeleteUser = DeleteUser Int deriving (Hashable, Typeable, Eq)  7 instance SafeAction Connection () () DeleteUser where # runSafeAction (DeleteUser i) = ( do runQuery $ deleteUserFromDb i  redirect "/user-list"   get "/user-details/:userId" $  do userId <- param' "userId" 6 deleteUrl <- safeActionPath (DeleteUser userId) L html $ "Click <a href='" <> deleteUrl <> "'>here</a> to delete user!" DNote that safeActions currently only support GET and POST requests. OPQRSTUVWXYZ[\]^_`ab  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abQPFRO SILJKNM[TUVWXYZ   !"#$%&\9;:<=>?@ABCDE,-./01345678_]^`'*+a(GH)2OPQRSTUVWXYZ[\]^_`aNoneNonee]Run a spock application using the warp server, a given db storageLayer and an initial state. S Spock works with database libraries that already implement connection pooling and  with those that don'0t come with it out of the box. For more see the 9 type. f9Run a raw spock application with custom underlying monad g)Convert a Spock-App to a wai-application i6Specify an action that will be run when the HTTP verb  and the given route match j6Specify an action that will be run when the HTTP verb  and the given route match k6Specify an action that will be run when the HTTP verb  and the given route match l6Specify an action that will be run when the HTTP verb  and the given route match m6Specify an action that will be run when the HTTP verb  and the given route match n6Specify an action that will be run when the HTTP verb  and the given route match oNSpecify an action that will be run when a HTTP verb and the given route match p&Define a subcomponent. Usage example:   subcomponent "/site" $  do get "/home" homeHandler " get "/misc/:param" $ -- ...  subcomponent "/admin" $ # do get "/home" adminHomeHandler  The request site+home will be routed to homeHandler and the  request admin(home will be routed to adminHomeHandler qHook wai middleware into Spock rJWrite to the current session. Note that all data is stored on the server. 6 The user only reciedes a sessionId to be identified. sModify the stored session tRead the stored session uNGlobally delete all existing sessions. This is useful for example if you want ! to require all users to relogin vHWire up a safe action: Safe actions are actions that are protected from  csrf attacks. Here's a usage example:  G newtype DeleteUser = DeleteUser Int deriving (Hashable, Typeable, Eq)  7 instance SafeAction Connection () () DeleteUser where # runSafeAction (DeleteUser i) = ( do runQuery $ deleteUserFromDb i  redirect "/user-list"   get "/user-details/:userId" $  do userId <- param' "userId" 6 deleteUrl <- safeActionPath (DeleteUser userId) L html $ "Click <a href='" <> deleteUrl <> "'>here</a> to delete user!" DNote that safeActions currently only support GET and POST requests. bcdefghijklmnopqrstuv^  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHbcdefghijklmnopqrstuv^edFfc gbhpijklmno   !"#$%&q9;:<=>?@ABCDE,-./01345678trsu'*+v(GH)2bcdefghijklmnopqrstuvNoneNonewwww !"#$%&'()*+,-./012345678 9 : ; < = > ? @ A B C D D E F G H I J K L L M N O P P Q R S T U VWXYWXZWX[WX\WX]WX^_`abcdefghijklmnopqr_`abcsdefghijklmnopqtuvwxyz{|}~WkWlWj        :      C  _r_ Spock-0.7.0.0Web.Spock.SafeWeb.Spock.SimpleWeb.Spock.Specs.All#Web.Spock.Specs.FrameworkSpecHelperWeb.Spock.Internal.UtilWeb.Spock.Internal.WireWeb.Spock.Internal.CoreWeb.Spock.Internal.CoreActionWeb.Spock.Internal.DigestiveWeb.Spock.Internal.TypesWeb.Spock.Internal.Monad!Web.Spock.Internal.SessionManagerWeb.Spock.Internal.WrapperWeb.Spock.Specs.SafeSpecWeb.Spock.Specs.SimpleSpechttp-types-0.8.5Network.HTTP.Types.MethodTRACEPUTPOSTPATCHOPTIONSHEADGETDELETECONNECT StdMethodActionT UploadedFileuf_nameuf_contentTypeuf_tempLocationrequestheadercookiebodyjsonBody jsonBody'filesparamsparamparam' setStatus setHeaderjumpNextredirect setCookie setCookie'bytes lazyBytestexthtmlfilejsonblazerequireBasicAuthrunForm WebStateM SafeAction runSafeActionHasSpock SpockConn SpockState SpockSessionrunQuerygetStateWebState SessionCfg sc_cookieName sc_sessionTTLsc_sessionIdEntropysc_emptySession PoolOrConnPCConnPCPool ConnBuilder cb_createConncb_destroyConncb_poolConfigurationPoolCfg pc_stripespc_resPerStripepc_keepOpenTime SpockAction getSpockHeart runSpockIOreroute-0.1.0.0Web.Routing.SafeRoutingPathvarstaticroot renderRouteSpockTSpockMspockspockTspockAppgetpostheadputdeletepatch hookRoute subcomponent middleware writeSession modifySession readSessionclearAllSessionssafeActionPath SpockRoute<#>allSpecs frameworkSpec routingSpec actionSpec mapReqHeaders SpockAllT runActionTActionInterupt ActionDone ActionError ActionTryNextActionRedirect ResponseStaters_responseHeaders rs_statusrs_responseBody ResponseBodyResponseRedirect ResponseLBS ResponseFile RequestInfo ri_request ri_paramsri_queryParamsri_filesrespStateToResponse errorResponsenotFound invalidReq serverErrorbuildApp$fMonadTransActionT$fErrorActionInterupt$fHashableStdMethod spockAllTbaseGHC.BaseidWeb.Routing.AbstractRouter time-1.4.0.1Data.Time.Clock.UTCUTCTime GHC.Conc.SyncTVar getSessMgr SpockAllMSessionManagersm_readSessionsm_writeSessionsm_modifySessionsm_clearAllSessions sm_middlewaresm_addSafeActionsm_lookupSafeActionsm_removeSafeAction UserSessionsSessionsess_idsess_validUntil sess_datasess_safeActions SessionId runWebStateMSafeActionHashSafeActionStore sas_forward sas_reversePackedSafeActionunpackSafeAction web_dbConnweb_sessionMgr web_state $fShowSession$fMonadBaseControlIOWebStateM$fMonadBaseIOWebStateM$fEqPackedSafeAction$fHashablePackedSafeActionWStMunWStMwebM runQueryImpl getStateImplgetSessMgrImpl$fPathPieceUTCTime$fPathPieceByteString$fHasSpockWebStateM $fHasSpocktcreateSessionManagermodifySessionBasereadSessionBaseaddSafeActionImpllookupSafeActionImplremoveSafeActionImplreadSessionImplwriteSessionImplmodifySessionImplsessionMiddlewarenewSessionImplloadSessionImpldeleteSessionImplclearAllSessionsImplhousekeepSessions createSession randomHashspockAll runSpockThookSafeActions$fMonadTransSpockTappspec _unSpockRoute