network-api-support 0.0.2 → 0.0.3
raw patch · 3 files changed
+24/−5 lines, 3 files
Files
- network-api-support.cabal +1/−1
- src/Network/Api/Support/Request.hs +20/−2
- src/Network/Api/Support/Security.hs +3/−2
network-api-support.cabal view
@@ -1,5 +1,5 @@ Name: network-api-support-Version: 0.0.2+Version: 0.0.3 License: BSD3 License-File: LICENSE Author: Mark Hibberd <mark@hibberd.id.au>
src/Network/Api/Support/Request.hs view
@@ -4,6 +4,9 @@ , setApiKey , setParams , setHeaders+, setHeader+, addHeader+, stripHeader , setMethod , setBody , setBodyLazy@@ -38,8 +41,22 @@ -- | Set request headers. setHeaders :: [(CI B.ByteString, B.ByteString)] -> RequestTransformer m-setHeaders m = Endo $ \r -> r { requestHeaders = m }+setHeaders hs = Endo $ \r -> r { requestHeaders = hs } +-- | Set a request headers.+setHeader :: (CI B.ByteString, B.ByteString) -> RequestTransformer m+setHeader h = stripHeader (fst h) <> addHeader h++-- | Add a request headers.+addHeader :: (CI B.ByteString, B.ByteString) -> RequestTransformer m+addHeader h = Endo $ \r -> r { requestHeaders = requestHeaders r ++ [h] }++-- | Set a request headers.+stripHeader :: CI B.ByteString -> RequestTransformer m+stripHeader n = (Endo $ \r -> r {+ requestHeaders = filter (\x -> fst x == n) (requestHeaders r)+ })+ -- | Set the request method to be the specified name. setMethod :: B.ByteString -> RequestTransformer m setMethod m = Endo $ \r -> r { method = m }@@ -54,7 +71,8 @@ -- | Set the request body from the value which can be converted to JSON. setJson :: ToJSON a => a -> RequestTransformer m-setJson = setBodyLazy . encode . toJSON+setJson v = setHeader ("Content-Type", "application/json") <>+ (setBodyLazy . encode . toJSON $ v) -- * Compatability
src/Network/Api/Support/Security.hs view
@@ -7,11 +7,12 @@ import Network.TLS (TLSCertificateUsage) import Network.TLS.Extra (certificateVerifyDomain)+import Data.CertificateStore (CertificateStore) -- | A TLS validator that checks the domain only. Note that this means the validator -- | will not check the cert chain, and can be used on systems where Data.Certificate.X509 -- | falls over as it does not have access to local root certs. -- | -- | ! Use with caution !-checkDomainOnly :: B8.ByteString -> [X509] -> IO TLSCertificateUsage-checkDomainOnly host' certs = return $ certificateVerifyDomain (B8.unpack host') certs+checkDomainOnly :: CertificateStore -> B8.ByteString -> [X509] -> IO TLSCertificateUsage+checkDomainOnly _ host' certs = return $ certificateVerifyDomain (B8.unpack host') certs