module Web.HackerNews
(
getStory
, getComment
, getPoll
, getPollOpt
, getUser
, getTopStories
, getMaxItem
, getUpdates
, Comment (..)
, CommentId (..)
, Poll (..)
, PollId (..)
, PollOpt (..)
, PollOptId (..)
, Story (..)
, StoryId (..)
, User (..)
, UserId (..)
, Update (..)
, MaxItem
, TopStories
) where
import Data.Monoid ((<>))
import Web.HackerNews.Types
import Web.HackerNews.Util (toText)
import Web.HackerNews.Client (getItem)
getStory :: StoryId -> IO (Maybe Story)
getStory (StoryId storyid) = getItem $ "item/" <> toText storyid
getComment :: CommentId -> IO (Maybe Comment)
getComment (CommentId commentid) = getItem $ "item/" <> toText commentid
getPoll :: PollId -> IO (Maybe Poll)
getPoll (PollId pollid) = getItem $ "item/" <> toText pollid
getPollOpt :: PollOptId -> IO (Maybe PollOpt)
getPollOpt (PollOptId polloptid) = getItem $ "item/" <> toText polloptid
getUser :: UserId -> IO (Maybe User)
getUser (UserId userid) = getItem $ "user/" <> userid
getTopStories :: IO (Maybe TopStories)
getTopStories = getItem "topstories"
getMaxItem :: IO (Maybe MaxItem)
getMaxItem = getItem "maxitem"
getUpdates :: IO (Maybe Update)
getUpdates = getItem "updates"