{-# LANGUAGE DeriveGeneric #-} {- | Module: Network.SoundCloud.Comment Copyright: (c) 2012 Sebastián Ramírez Magrí License: BSD3 Maintainer: Sebastián Ramírez Magrí Stability: experimental Represents SoundCloud comments -} module Network.SoundCloud.Comment where import Data.Aeson (FromJSON, ToJSON, decode) import qualified Data.ByteString.Lazy.Char8 as BSL import GHC.Generics (Generic) import qualified Network.SoundCloud.MiniUser as User -- | Represents comment's JSON as a record data JSON = JSON { id :: Int , created_at :: String , body :: String , timestamp :: Maybe Int , user :: User.JSON , track_id :: Int } deriving (Show, Generic) instance FromJSON JSON instance ToJSON JSON -- | Decode a comment's valid JSON string into -- a comment's 'JSON' record decodeJSON :: String -> Maybe JSON decodeJSON dat = decode (BSL.pack dat) :: Maybe JSON -- | Show a summary about a comment showComment :: JSON -> String showComment c = concat ["\nAt ", created_at c, ", ", User.username $ user c, " said:\n", body c, "\n"]