snap-core-1.0.5.1: src/Snap/Core.hs
{-|
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.