liblastfm 0.1.1.0 → 0.1.1.1
raw patch · 2 files changed
+91/−5 lines, 2 filesdep +HUnitdep +attoparsecdep +liblastfmdep ~aesondep ~basedep ~bytestringPVP ok
version bump matches the API change (PVP)
Dependencies added: HUnit, attoparsec, liblastfm, test-framework, test-framework-hunit
Dependency ranges changed: aeson, base, bytestring, http-conduit, network
API changes (from Hackage documentation)
Files
- liblastfm.cabal +23/−5
- tests/json.hs +68/−0
liblastfm.cabal view
@@ -1,5 +1,5 @@ name: liblastfm-version: 0.1.1.0+version: 0.1.1.1 synopsis: Lastfm API interface license: MIT license-file: LICENSE@@ -8,20 +8,20 @@ category: Network APIs description: Provides interface to Lastfm REST API, supports XML and JSON formats.-cabal-version: >= 1.8+cabal-version: >= 1.9.2 build-type: Simple library- build-depends: base >= 4.6 && < 5,+ build-depends: base >= 3 && < 5, bytestring, containers >= 0.5, text, cereal,- http-conduit,+ http-conduit >= 1.9, http-types, pureMD5, crypto-api,- network >= 2.4,+ network, aeson hs-source-dirs: src exposed-modules: Network.Lastfm@@ -46,6 +46,24 @@ ghc-options: -Wall -fno-warn-unused-do-bind -funbox-strict-fields+++test-suite json+ build-depends: base >= 3 && < 5,+ bytestring >= 0.9 && < 0.11,+ attoparsec >= 0.10,+ aeson == 0.6.*,+ HUnit,+ test-framework,+ test-framework-hunit,+ text,+ liblastfm+ type: exitcode-stdio-1.0+ main-is: json.hs+ hs-source-dirs: tests+ ghc-options: -Wall+ -fno-warn-unused-do-bind+ -fno-warn-orphans source-repository head
+ tests/json.hs view
@@ -0,0 +1,68 @@+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE UnicodeSyntax #-}+module Main where++import Control.Applicative+import Data.Monoid+import System.Exit (ExitCode(ExitFailure), exitWith)++import qualified Data.ByteString.Lazy as B+import Data.Aeson+import Data.Text (Text)+import Network.Lastfm+import Test.Framework++import qualified Album as Album+import qualified Artist as Artist+import qualified Chart as Chart+import qualified Event as Event+import qualified Geo as Geo+import qualified Group as Group+import qualified Library as Library+import qualified Playlist as Playlist+import qualified Tag as Tag+import qualified Tasteometer as Tasteometer+import qualified Track as Track+import qualified User as User+import qualified Venue as Venue+++main ∷ IO ()+main =+ do keys ← B.readFile "tests/lastfm-keys.json"+ case decode keys of+ Just (Keys ak sk s) →+ defaultMainWithOpts (auth <> noauth) (mempty { ropt_threads = Just 20 })+ where+ auth = mconcat . map (\f → f (apiKey ak) (sessionKey sk) (Secret s)) $+ [ Album.auth+ , Artist.auth+ , Event.auth+ , Library.auth+ , Playlist.auth+ , Track.auth+ , User.auth+ ]+ noauth = mconcat . map (\f → f (apiKey ak)) $+ [ Album.noauth+ , Artist.noauth+ , Chart.noauth+ , Event.noauth+ , Geo.noauth+ , Group.noauth+ , Library.noauth+ , Tag.noauth+ , Tasteometer.noauth+ , Track.noauth+ , User.noauth+ , Venue.noauth+ ]+ Nothing → exitWith (ExitFailure 1)+++data Keys = Keys Text Text Text+++instance FromJSON Keys where+ parseJSON (Object o) = Keys <$> (o .: "APIKey") <*> (o .: "SessionKey") <*> (o .: "Secret")+ parseJSON _ = empty