packages feed

dynamic 0.0.7 → 0.1.0

raw patch · 3 files changed

+56/−21 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Dynamic: post :: Dynamic -> [(Dynamic, Dynamic)] -> Dynamic -> IO Text
- Dynamic: get :: Dynamic -> IO Text
+ Dynamic: get :: Dynamic -> [(Dynamic, Dynamic)] -> IO Text
- Dynamic: getJson :: Dynamic -> IO Dynamic
+ Dynamic: getJson :: Dynamic -> [(Dynamic, Dynamic)] -> IO Dynamic
- Dynamic: postJson :: Dynamic -> Dynamic -> IO Text
+ Dynamic: postJson :: Dynamic -> [(Dynamic, Dynamic)] -> Dynamic -> IO Dynamic

Files

README.md view
@@ -70,7 +70,7 @@ ## Web requests!  ```json-> chris <- getJson "https://api.github.com/users/chrisdone"+> chris <- getJson "https://api.github.com/users/chrisdone" [] > chris {     "bio": null,
dynamic.cabal view
@@ -1,5 +1,5 @@ name:                dynamic-version:             0.0.7+version:             0.1.0 synopsis:            A dynamic type for Haskell description:         Want to do dynamically typed programming in Haskell sometimes? Here you go! homepage:            https://github.com/chrisdone/dynamic#readme
src/Dynamic.hs view
@@ -37,6 +37,7 @@   , toElems   -- * Web requests   , get+  , post   , getJson   , postJson   ) where@@ -46,11 +47,13 @@ import qualified Data.Aeson as Aeson import qualified Data.Aeson.Encode.Pretty as Aeson import           Data.Bifunctor+import           Data.ByteString (ByteString) import qualified Data.ByteString.Lazy as L import qualified Data.Csv as Csv import           Data.Data import           Data.HashMap.Strict (HashMap) import qualified Data.HashMap.Strict as HM+import           Data.List import           Data.Maybe import           Data.String import           Data.Text (Text)@@ -255,6 +258,12 @@ -------------------------------------------------------------------------------- -- Output +toString :: Dynamic -> String+toString = T.unpack . toText++toByteString :: Dynamic -> ByteString+toByteString = T.encodeUtf8 . toText+ -- | Convert to string if string, or else JSON encoding. toText :: Dynamic -> Text toText =@@ -397,30 +406,56 @@ -------------------------------------------------------------------------------- -- Web helpers --- | HTTP request for text content.-get :: Dynamic -> IO Text-get url = do+-- | HTTP GET request for text content.+get ::+     Dynamic+  -> [(Dynamic, Dynamic)] -- ^ Headers.+  -> IO Text+get url headers = do   response <-     httpBS-      (addRequestHeader-         "User-Agent"-         "haskell-dynamic"-         (fromString (T.unpack (toText url))))+      (foldl'+         (\r (k, v) ->+            addRequestHeader (fromString (toString k)) (toByteString v) r)+         (addRequestHeader+            "User-Agent"+            "haskell-dynamic"+            (fromString (toString url)))+         headers)   pure (T.decodeUtf8 (getResponseBody response)) --- | HTTP request for text content.-getJson :: Dynamic -> IO Dynamic-getJson = fmap fromJson . get+-- | HTTP GET request for text content.+getJson ::+     Dynamic+  -> [(Dynamic, Dynamic)] -- ^ Headers.+  -> IO Dynamic+getJson url headers = fmap fromJson (get url headers) --- | HTTP request for text content.-postJson :: Dynamic -> Dynamic -> IO Text-postJson url body = do+-- | HTTP POST request for text content.+post ::+     Dynamic -- ^ URL.+  -> [(Dynamic, Dynamic)] -- ^ Headers.+  -> Dynamic -- ^ Body.+  -> IO Text+post url headers body = do   response <-     httpBS-      (addRequestHeader-         "User-Agent"-         "haskell-dynamic"-         (setRequestMethod-            "POST"-            (setRequestBodyJSON body (fromString (T.unpack (toText url))))))+      (foldl'+         (\r (k, v) ->+            addRequestHeader (fromString (toString k)) (toByteString v) r)+         (addRequestHeader+            "User-Agent"+            "haskell-dynamic"+            (setRequestMethod+               "POST"+               (setRequestBodyJSON body (fromString (toString url)))))+         headers)   pure (T.decodeUtf8 (getResponseBody response))++-- | HTTP POST request for JSON content.+postJson ::+     Dynamic -- ^ URL.+  -> [(Dynamic, Dynamic)] -- ^ Headers.+  -> Dynamic -- ^ Body.+  -> IO Dynamic+postJson url headers body = fmap fromJson (post url headers body)