{-| This module contains the core type definitions, class instances, and functions for HTTP as well as the 'Snap' monad, which is used for web handlers. -} module Snap.Core ( -- * The Snap Monad Snap , runSnap , MonadSnap(..) , NoHandlerException(..) -- ** Functions for control flow and early termination , bracketSnap , finishWith , catchFinishWith , pass -- *** Escaping HTTP , EscapeHttpHandler , EscapeSnap(..) , escapeHttp , terminateConnection -- ** Routing , method , methods , path , pathArg , dir , ifTop , route , routeLocal -- ** Access to state , getRequest , getsRequest , getResponse , getsResponse , putRequest , putResponse , modifyRequest , modifyResponse , localRequest , withRequest , withResponse -- ** Logging , logError -- ** Grabbing/transforming request bodies , runRequestBody , readRequestBody , transformRequestBody -- * HTTP Datatypes and Functions -- $httpDoc -- , Request , Response , Headers , HasHeaders(..) , Params , Method(..) , Cookie(..) , HttpVersion -- ** Headers , addHeader , setHeader , getHeader , listHeaders , deleteHeader , ipHeaderFilter , ipHeaderFilter' -- ** Requests , rqHeaders , rqHostName , rqClientAddr , rqClientPort , rqServerAddr , rqServerPort , rqLocalHostname , rqIsSecure , rqContentLength , rqMethod , rqVersion , rqCookies , rqPathInfo , rqContextPath , rqURI , rqQueryString , rqParams , rqQueryParams , rqPostParams , rqParam , rqPostParam , rqQueryParam , getParam , getPostParam , getQueryParam , getParams , getPostParams , getQueryParams , rqModifyParams , rqSetParam -- *** Deprecated functions , rqRemoteAddr , rqRemotePort -- ** Responses , emptyResponse , setResponseCode , setResponseStatus , rspStatus , rspStatusReason , setContentType , addResponseCookie , getResponseCookie , getResponseCookies , deleteResponseCookie , modifyResponseCookie , expireCookie , getCookie , readCookie , setContentLength , clearContentLength , redirect , redirect' -- *** Response I/O , setResponseBody , modifyResponseBody , addToOutput , writeBuilder , writeBS , writeLazyText , writeText , writeLBS , sendFile , sendFilePartial -- ** Timeouts , setTimeout , extendTimeout , modifyTimeout , getTimeoutModifier -- * HTTP utilities , formatHttpTime , parseHttpTime , parseUrlEncoded , buildUrlEncoded , printUrlEncoded , urlEncode , urlEncodeBuilder , urlDecode ) where ------------------------------------------------------------------------------ import Snap.Internal.Core (EscapeHttpHandler, EscapeSnap (..), MonadSnap (..), NoHandlerException (..), Snap, addToOutput, bracketSnap, catchFinishWith, dir, escapeHttp, expireCookie, extendTimeout, finishWith, getCookie, getParam, getParams, getPostParam, getPostParams, getQueryParam, getQueryParams, getRequest, getResponse, getTimeoutModifier, getsRequest, getsResponse, ifTop, ipHeaderFilter, ipHeaderFilter', localRequest, logError, method, methods, modifyRequest, modifyResponse, modifyTimeout, pass, path, pathArg, putRequest, putResponse, readCookie, readRequestBody, redirect, redirect', runRequestBody, runSnap, sendFile, sendFilePartial, setTimeout, terminateConnection, transformRequestBody, withRequest, withResponse, writeBS, writeBuilder, writeLBS, writeLazyText, writeText) import Snap.Internal.Http.Types (Cookie (..), HasHeaders (..), HttpVersion, Method (..), Params, Request (rqClientAddr, rqClientPort, rqContentLength, rqContextPath, rqCookies, rqHeaders, rqHostName, rqIsSecure, rqLocalHostname, rqMethod, rqParams, rqPathInfo, rqPostParams, rqQueryParams, rqQueryString, rqServerAddr, rqServerPort, rqURI, rqVersion), Response (rspStatus, rspStatusReason), addHeader, addResponseCookie, clearContentLength, deleteHeader, deleteResponseCookie, emptyResponse, formatHttpTime, getHeader, getResponseCookie, getResponseCookies, listHeaders, modifyResponseBody, modifyResponseCookie, parseHttpTime, rqModifyParams, rqParam, rqPostParam, rqQueryParam, rqRemoteAddr, rqRemotePort, rqSetParam, setContentLength, setContentType, setHeader, setResponseBody, setResponseCode, setResponseStatus) import Snap.Internal.Instances () import Snap.Internal.Parsing (buildUrlEncoded, parseUrlEncoded, printUrlEncoded, urlDecode, urlEncode, urlEncodeBuilder) import Snap.Internal.Routing (route, routeLocal) import Snap.Types.Headers (Headers) ------------------------------------------------------------------------------ -- $httpDoc -- HTTP-related datatypes: 'Request', 'Response', 'Cookie', etc.