hackernews-0.2.0.1: src/Web/HackerNews.hs
{-# LANGUAGE OverloadedStrings #-}
module Web.HackerNews
( -- * Hacker News Monad
hackerNews
-- * API Calls
, getStory
, getComment
, getPoll
, getPollOpt
, getUser
, getTopStories
, getMaxItem
, getUpdates
-- * Types
, HackerNews
, 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
------------------------------------------------------------------------------
-- | Retrieve a `Story` by `StoryId`
getStory :: StoryId -> HackerNews (Maybe Story)
getStory (StoryId storyid) = buildHNRequest $ "item/" <> toText storyid
------------------------------------------------------------------------------
-- | Retrieve a `Comment` by `CommentId`
getComment :: CommentId -> HackerNews (Maybe Comment)
getComment (CommentId commentid) = buildHNRequest $ "item/" <> toText commentid
------------------------------------------------------------------------------
-- | Retrieve a `Poll` by `PollId`
getPoll :: PollId -> HackerNews (Maybe Poll)
getPoll (PollId pollid) = buildHNRequest $ "item/" <> toText pollid
------------------------------------------------------------------------------
-- | Retrieve a `PollOpt` by `PollOptId`
getPollOpt :: PollOptId -> HackerNews (Maybe PollOpt)
getPollOpt (PollOptId polloptid) = buildHNRequest $ "item/" <> toText polloptid
------------------------------------------------------------------------------
-- | Retrieve a `User` by `UserId`
getUser :: UserId -> HackerNews (Maybe User)
getUser (UserId userid) = buildHNRequest $ "user/" <> userid
------------------------------------------------------------------------------
-- | Retrieve the Top Stories on Hacker News
getTopStories :: HackerNews (Maybe TopStories)
getTopStories = buildHNRequest "topstories"
------------------------------------------------------------------------------
-- | Retrieve the largest ItemId
getMaxItem :: HackerNews (Maybe MaxItem)
getMaxItem = buildHNRequest "maxitem"
------------------------------------------------------------------------------
-- | Retrieve the latest updates
getUpdates :: HackerNews (Maybe Update)
getUpdates = buildHNRequest "updates"