git.iko.soy/typeable/flat-instances
on master help sign in
add servant
commitd2121a4dacdfd6d9719576629b46e0d2197cd78f authorDmitry Olshansky <olshanskydr@gmail.com> dateThu 15 Dec 2022, 11:03 (4 years ago) parent1478d52
2 files changed+31
flat-instances.cabal+12 src/Flat/Servant.hs+19
flat-instances.cabal+12
@@ -4,6 +4,11 @@ name: flat-instances
44version: 0.1.0.0
55license-file: LICENSE
66
7+Flag flat-servant
8+ Description: Enable Flat serialization support
9+ Default: True
10+ Manual: False
11+
712library
813 exposed-modules:
914 Flat.Orphans
@@ -11,6 +16,13 @@ library
1116 base,
1217 flat,
1318 time,
19+ if flag(flat-servant)
20+ exposed-modules:
21+ Flat.Servant
22+ build-depends:
23+ bytestring,
24+ servant,
25+
1426 hs-source-dirs:
1527 src
1628 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