0 | ||| Mime render and unrender.
 1 | module Pact.API.MimeRender
 2 |
 3 | import Pact.API.Accept
 4 | import JSON.FromJSON
 5 | import JSON.ToJSON
 6 |
 7 | ||| Mime render a value to a string.
 8 | public export
 9 | interface Accept ctype => MimeRender ctype a where
10 |   ||| Render a value to a string.
11 |   mimeRender : a -> String
12 |
13 | --- Implementations
14 |
15 | public export
16 | implementation MimeRender PlainTextAccept String where
17 |   mimeRender = id
18 |
19 | public export
20 | implementation ToJSON a => MimeRender JSONAccept a where
21 |   mimeRender = encode
22 |
23 | ||| Mime unrender a value from a string.
24 | public export
25 | interface Accept ctype => MimeUnrender ctype a where
26 |   ||| Unrender a value from a string.
27 |   mimeUnrender : String -> Either String a
28 |
29 | --- Implementations
30 |
31 | public export
32 | implementation MimeUnrender PlainTextAccept String where
33 |   mimeUnrender = Right
34 |
35 |
36 | public export
37 | implementation FromJSON a => MimeUnrender JSONAccept a where
38 |   mimeUnrender = either (Left . show) Right . decode