Safe Haskell | None |
---|---|
Language | Haskell98 |
- data Content
- = ContentBuilder !Builder !(Maybe Int)
- | ContentSource !(Source (ResourceT IO) (Flush Builder))
- | ContentFile !FilePath !(Maybe FilePart)
- | ContentDontEvaluate !Content
- emptyContent :: Content
- class ToContent a where
- class ToFlushBuilder a where
- toFlushBuilder :: a -> Flush Builder
- type ContentType = ByteString
- typeHtml :: ContentType
- typePlain :: ContentType
- typeJson :: ContentType
- typeXml :: ContentType
- typeAtom :: ContentType
- typeRss :: ContentType
- typeJpeg :: ContentType
- typePng :: ContentType
- typeGif :: ContentType
- typeSvg :: ContentType
- typeJavascript :: ContentType
- typeCss :: ContentType
- typeFlv :: ContentType
- typeOgv :: ContentType
- typeOctet :: ContentType
- simpleContentType :: ContentType -> ContentType
- contentTypeTypes :: ContentType -> (ByteString, ByteString)
- newtype DontFullyEvaluate a = DontFullyEvaluate {
- unDontFullyEvaluate :: a
- data TypedContent = TypedContent !ContentType !Content
- class ToContent a => ToTypedContent a where
- toTypedContent :: a -> TypedContent
- class ToTypedContent a => HasContentType a where
- getContentType :: Monad m => m a -> ContentType
- type RepHtml = Html
- newtype RepJson = RepJson Content
- newtype RepPlain = RepPlain Content
- newtype RepXml = RepXml Content
- repJson :: ToContent a => a -> RepJson
- repPlain :: ToContent a => a -> RepPlain
- repXml :: ToContent a => a -> RepXml
Content
ContentBuilder !Builder !(Maybe Int) | The content and optional content length. |
ContentSource !(Source (ResourceT IO) (Flush Builder)) | |
ContentFile !FilePath !(Maybe FilePart) | |
ContentDontEvaluate !Content |
emptyContent :: Content Source
Zero-length enumerator.
class ToContent a where Source
Anything which can be converted into Content
. Most of the time, you will
want to use the ContentBuilder
constructor. An easier approach will be to use
a pre-defined toContent
function, such as converting your data into a lazy
bytestring and then calling toContent
on that.
Please note that the built-in instances for lazy data structures (String
,
lazy ByteString
, lazy Text
and Html
) will not automatically include
the content length for the ContentBuilder
constructor.
ToContent String | |
ToContent () | |
ToContent ByteString | |
ToContent ByteString | |
ToContent Text | |
ToContent Text | |
ToContent Builder | |
ToContent Html | |
ToContent Value | |
ToContent Javascript | |
ToContent RepXml | |
ToContent RepPlain | |
ToContent RepJson | |
ToContent TypedContent | |
ToContent Content | |
ToContent Css | |
ToContent a => ToContent (DontFullyEvaluate a) | |
ToContent (ContentType, Content) | |
ToFlushBuilder builder => ToContent (Source (ResourceT IO) builder) | |
ToFlushBuilder builder => ToContent (ResumableSource (ResourceT IO) builder) | |
ToFlushBuilder builder => ToContent (Pipe () () builder () (ResourceT IO) ()) |
class ToFlushBuilder a where Source
A class for all data which can be sent in a streaming response. Note that for textual data, instances must use UTF-8 encoding.
Since 1.2.0
toFlushBuilder :: a -> Flush Builder Source
ToFlushBuilder String | |
ToFlushBuilder ByteString | |
ToFlushBuilder ByteString | |
ToFlushBuilder Text | |
ToFlushBuilder Text | |
ToFlushBuilder Builder | |
ToFlushBuilder Html | |
ToFlushBuilder (Flush String) | |
ToFlushBuilder (Flush ByteString) | |
ToFlushBuilder (Flush ByteString) | |
ToFlushBuilder (Flush Text) | |
ToFlushBuilder (Flush Text) | |
ToFlushBuilder (Flush Builder) | |
ToFlushBuilder (Flush Html) |
Mime types
Data type
type ContentType = ByteString Source
Utilities
simpleContentType :: ContentType -> ContentType Source
Removes "extra" information at the end of a content type string. In particular, removes everything after the semicolon, if present.
For example, "text/html; charset=utf-8" is commonly used to specify the character encoding for HTML data. This function would return "text/html".
Evaluation strategy
newtype DontFullyEvaluate a Source
Prevents a response body from being fully evaluated before sending the request.
Since 1.1.0
ToTypedContent a => ToTypedContent (DontFullyEvaluate a) | |
HasContentType a => HasContentType (DontFullyEvaluate a) | |
ToContent a => ToContent (DontFullyEvaluate a) |
Representations
data TypedContent Source
class ToContent a => ToTypedContent a where Source
Any type which can be converted to TypedContent
.
Since 1.2.0
toTypedContent :: a -> TypedContent Source
class ToTypedContent a => HasContentType a where Source
getContentType :: Monad m => m a -> ContentType Source
HasContentType Text | |
HasContentType Text | |
HasContentType Html | |
HasContentType Value | |
HasContentType Javascript | |
HasContentType RepXml | |
HasContentType RepPlain | |
HasContentType RepJson | |
HasContentType Css | |
HasContentType a => HasContentType (DontFullyEvaluate a) |