git.iko.soy/typeable/swagger2
on master help sign in
Add TypeError for ToParamSchema ByteString instances
9fa029eNickolay Kudasov
src/Data/Swagger/Internal/ParamSchema.hs+22
@@ -1,4 +1,5 @@
1{-# LANGUAGE CPP #-}
1{-# LANGUAGE CPP #-}
2+{-# LANGUAGE DataKinds #-}
2{-# LANGUAGE DefaultSignatures #-}
3{-# LANGUAGE DefaultSignatures #-}
3{-# LANGUAGE FlexibleContexts #-}
4{-# LANGUAGE FlexibleContexts #-}
4{-# LANGUAGE FlexibleInstances #-}
5{-# LANGUAGE FlexibleInstances #-}
@@ -7,8 +8,10 @@
7{-# LANGUAGE PackageImports #-}
8{-# LANGUAGE PackageImports #-}
8{-# LANGUAGE PolyKinds #-}
9{-# LANGUAGE PolyKinds #-}
9{-# LANGUAGE ScopedTypeVariables #-}
10{-# LANGUAGE ScopedTypeVariables #-}
11+{-# LANGUAGE TypeFamilies #-}
10{-# LANGUAGE TypeOperators #-}
12{-# LANGUAGE TypeOperators #-}
11{-# LANGUAGE TypeSynonymInstances #-}
13{-# LANGUAGE TypeSynonymInstances #-}
14+{-# LANGUAGE UndecidableInstances #-}
12#include "overlapping-compat.h"
15#include "overlapping-compat.h"
13module Data.Swagger.Internal.ParamSchema where
16module Data.Swagger.Internal.ParamSchema where
14
17
@@ -35,6 +38,13 @@ import Data.Swagger.Internal
35import Data.Swagger.Lens
38import Data.Swagger.Lens
36import Data.Swagger.SchemaOptions
39import Data.Swagger.SchemaOptions
37
40
41+#if __GLASGOW_HASKELL__ < 800
42+#else
43+import qualified Data.ByteString as BS
44+import qualified Data.ByteString.Lazy as BSL
45+import GHC.TypeLits (TypeError, ErrorMessage(..))
46+#endif
47+
38-- | Default schema for binary data (any sequence of octets).
48-- | Default schema for binary data (any sequence of octets).
39binaryParamSchema :: ParamSchema t
49binaryParamSchema :: ParamSchema t
40binaryParamSchema = mempty
50binaryParamSchema = mempty
@@ -188,6 +198,18 @@ instance ToParamSchema T.Text where
188instance ToParamSchema TL.Text where
198instance ToParamSchema TL.Text where
189 toParamSchema _ = toParamSchema (Proxy :: Proxy String)
199 toParamSchema _ = toParamSchema (Proxy :: Proxy String)
190
200
201+#if __GLASGOW_HASKELL__ < 800
202+#else
203+type family ToParamSchemaByteStringError bs where
204+ ToParamSchemaByteStringError bs = TypeError
205+ ( Text "Impossible to have an instance " :<>: ShowType (ToParamSchema bs) :<>: Text "."
206+ :$$: Text "Please, use a newtype wrapper around " :<>: ShowType bs :<>: Text " instead."
207+ :$$: Text "Consider using byteParamSchema or binaryParamSchema templates." )
208+
209+instance ToParamSchemaByteStringError BS.ByteString => ToParamSchema BS.ByteString where toParamSchema = error "impossible"
210+instance ToParamSchemaByteStringError BSL.ByteString => ToParamSchema BSL.ByteString where toParamSchema = error "impossible"
211+#endif
212+
191instance ToParamSchema All where toParamSchema _ = toParamSchema (Proxy :: Proxy Bool)
213instance ToParamSchema All where toParamSchema _ = toParamSchema (Proxy :: Proxy Bool)
192instance ToParamSchema Any where toParamSchema _ = toParamSchema (Proxy :: Proxy Bool)
214instance ToParamSchema Any where toParamSchema _ = toParamSchema (Proxy :: Proxy Bool)
193instance ToParamSchema a => ToParamSchema (Sum a) where toParamSchema _ = toParamSchema (Proxy :: Proxy a)
215instance ToParamSchema a => ToParamSchema (Sum a) where toParamSchema _ = toParamSchema (Proxy :: Proxy a)