http-query 0.1.0 → 0.1.0.1
raw patch · 4 files changed
+26/−10 lines, 4 filesdep +transformersdep ~aesonPVP ok
version bump matches the API change (PVP)
Dependencies added: transformers
Dependency ranges changed: aeson
API changes (from Hackage documentation)
Files
- ChangeLog.md +6/−2
- README.md +5/−2
- http-query.cabal +4/−2
- src/Network/HTTP/Query.hs +11/−4
ChangeLog.md view
@@ -1,4 +1,8 @@-# Revision history for simple-query+# Revision history for http-query -## 0.1 -- 2020-08-18+## 0.1.0.1 (2021-02-28)+- webAPIQuery: use setRequestCheckStatus+- build for ghc-7.10 with transformers++## 0.1.0 (2020-08-18) - initial release
README.md view
@@ -1,6 +1,9 @@-# simple-query+# http-query -Very thin layer over http-conduit for simpler web API queries.+[](https://github.com/juhp/dl-fedora/actions)+[](http://hackage.haskell.org/package/http-query)++Very thin layer over http-conduit for simpler web json API queries. See the Network.HTTP.Query documentation for more details.
http-query.cabal view
@@ -1,5 +1,5 @@ name: http-query-version: 0.1.0+version: 0.1.0.1 synopsis: Simple http queries description: Simple web API queries to JSON.@@ -7,7 +7,7 @@ license-file: LICENSE author: Jens Petersen <juhpetersen@gmail.com> maintainer: Jens Petersen <juhpetersen@gmail.com>-copyright: 2020 Jens Petersen <juhpetersen@gmail.com>+copyright: 2020-2021 Jens Petersen <juhpetersen@gmail.com> category: Web homepage: https://github.com/juhp/http-query bug-reports: https://github.com/juhp/http-query/issues@@ -27,6 +27,8 @@ , network-uri , http-conduit , text+ if impl(ghc < 8)+ build-depends: transformers exposed-modules: Network.HTTP.Query hs-source-dirs: src
src/Network/HTTP/Query.hs view
@@ -6,15 +6,19 @@ @ {-# LANGUAGE OverloadedStrings #-} +import Data.Text.IO as T import Network.HTTP.Query main = do let api = "http://www.example.com/api/1" endpoint = api +/+ "search" res <- webAPIQuery endpoint $ makeKey "q" "needle"- case lookupKey "results" res of- Nothing -> putStrLn "Result not found"- Just results -> print results+ T.putStrLn $+ case lookupKey "results" res of+ Nothing ->+ fromMaybe "search failed" $ lookupKey "error" res+ Just results ->+ lookupKey' "location" results @ -} @@ -84,9 +88,12 @@ case parseURI url of Nothing -> error $ "Cannot parse uri: " ++ url Just uri ->- let req = setRequestQueryString params $ requestFromURI_ uri+ let req = setRequestCheckStatus $+ setRequestQueryString params $+ requestFromURI_ uri in getResponseBody <$> httpJSON req +-- FIXME support "key1.key2" etc -- | Look up key in object lookupKey :: FromJSON a => Text -> Object -> Maybe a lookupKey k = parseMaybe (.: k)