diff --git a/servant-foreign/src/Servant/Foreign.hs b/servant-foreign/src/Servant/Foreign.hs index c1b54104..aa1a5573 100644 --- a/servant-foreign/src/Servant/Foreign.hs +++ b/servant-foreign/src/Servant/Foreign.hs @@ -5,6 +5,7 @@ module Servant.Foreign , HeaderArg(..) , QueryArg(..) , Req(..) + , ReqBodyContentType(..) , Segment(..) , SegmentType(..) , Url(..) @@ -21,6 +22,7 @@ module Servant.Foreign , reqMethod , reqHeaders , reqBody + , reqBodyContentType , reqReturnType , reqFuncName , path diff --git a/servant-foreign/src/Servant/Foreign/Internal.hs b/servant-foreign/src/Servant/Foreign/Internal.hs index bf5b63ac..cc867b4f 100644 --- a/servant-foreign/src/Servant/Foreign/Internal.hs +++ b/servant-foreign/src/Servant/Foreign/Internal.hs @@ -123,20 +123,24 @@ defUrl = Url [] [] makeLenses ''Url +data ReqBodyContentType = ReqBodyJSON | ReqBodyMultipart + deriving (Data, Eq, Show, Read) + data Req f = Req - { _reqUrl :: Url f - , _reqMethod :: HTTP.Method - , _reqHeaders :: [HeaderArg f] - , _reqBody :: Maybe f - , _reqReturnType :: Maybe f - , _reqFuncName :: FunctionName + { _reqUrl :: Url f + , _reqMethod :: HTTP.Method + , _reqHeaders :: [HeaderArg f] + , _reqBody :: Maybe f + , _reqReturnType :: Maybe f + , _reqFuncName :: FunctionName + , _reqBodyContentType :: ReqBodyContentType } deriving (Data, Eq, Show, Typeable) makeLenses ''Req defReq :: Req ftype -defReq = Req defUrl "GET" [] Nothing Nothing (FunctionName []) +defReq = Req defUrl "GET" [] Nothing Nothing (FunctionName []) ReqBodyJSON -- | 'HasForeignType' maps Haskell types with types in the target -- language of your backend. For example, let's say you're