twfy-api-client-0.1.0.0: src/Twfy/Data/JsonIso8859.hs
{-|
Module : Twfy.Data.JsonIso8859
Description : Content-Type not provided by Servant
Instances for Accept and MimeUnrender to allow Servant client to read 'text/javascript; charset=iso-8859-1'
-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module Twfy.Data.JsonIso8859
(
JsonIso8859
)
where
import Prelude ()
import Prelude.Compat
import Servant
import Data.Aeson
import qualified Data.ByteString.Lazy as LBS
import qualified Data.Text.Encoding as TE
import qualified Network.HTTP.Media as Media
-- | Type for 'text/plain; charset=iso8859-1'
data JsonIso8859
instance Accept JsonIso8859 where
contentType _ = "text" Media.// "javascript" Media./: ("charset", "iso-8859-1")
instance FromJSON a => MimeUnrender JsonIso8859 a where
mimeUnrender _ = eitherDecode . from8859ToUtf8
from8859ToUtf8 :: LBS.ByteString -> LBS.ByteString
from8859ToUtf8 iso = let isoText = TE.decodeLatin1 $ LBS.toStrict iso
utf8 = TE.encodeUtf8 isoText
in LBS.fromStrict utf8