git.iko.soy/typeable/flat-instances
on master help sign in
add servant
d2121a4Dmitry Olshansky
flat-instances.cabal+12
@@ -4,6 +4,11 @@ name: flat-instances
4version: 0.1.0.0
4version: 0.1.0.0
5license-file: LICENSE
5license-file: LICENSE
6
6
7+Flag flat-servant
8+ Description: Enable Flat serialization support
9+ Default: True
10+ Manual: False
11+
7library
12library
8 exposed-modules:
13 exposed-modules:
9 Flat.Orphans
14 Flat.Orphans
@@ -11,6 +16,13 @@ library
11 base,
16 base,
12 flat,
17 flat,
13 time,
18 time,
19+ if flag(flat-servant)
20+ exposed-modules:
21+ Flat.Servant
22+ build-depends:
23+ bytestring,
24+ servant,
25+
14 hs-source-dirs:
26 hs-source-dirs:
15 src
27 src
16 default-language:
28 default-language:
src/Flat/Servant.hsnew file+19
@@ -0,0 +1,19 @@
1+{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, OverloadedStrings #-}
2+module Flat.Servant where
3+
4+import Data.Bifunctor
5+import Data.ByteString.Lazy
6+import Flat as F
7+import Servant.API
8+
9+
10+data FlatBinary
11+
12+instance Accept FlatBinary where
13+ contentType _ = "application/octet-stream"
14+
15+instance Flat a => MimeRender FlatBinary a where
16+ mimeRender _ = fromStrict . F.flat
17+
18+instance Flat a => MimeUnrender FlatBinary a where
19+ mimeUnrender _ = first show . F.unflat