reddit-0.2.0.0: README.md
reddit for haskell [](https://travis-ci.org/intolerable/reddit)
---
A Haskell library for interacting with the [Reddit API](http://reddit.com/api).
### A couple of examples
Let's get all the posts from the frontpage of Reddit and write a summary of each of them to the console:
```haskell
{-# LANGUAGE OverloadedStrings #-}
import Reddit
import Reddit.Types.Post
import Control.Monad
import Control.Monad.IO.Class
import Data.Monoid
import qualified Data.Text as Text
import qualified Data.Text.IO as Text
main = runRedditAnon $ do
Listing _ _ posts <- getPosts
forM_ posts $ \post -> do
liftIO $ Text.putStrLn $
"[" <> tshow (score post) <> "] " <>
title post <> " (" <> tshow (subreddit post) <> ")"
tshow = Text.pack . show
```
Let's check to see which of a group of users has the highest link karma:
```haskell
{-# LANGUAGE OverloadedStrings #-}
import Reddit
import Reddit.Types.User
import Data.List
import Data.Ord
usersToCheck = ["nikita-volkov", "simonmar", "bos", "roche"]
main = runRedditAnon $ do
infos <- mapM (getUserInfo . Username) usersToCheck
return $ maximumBy (comparing linkKarma) infos
```
Testing
===
Pure tests
---
`cabal test test`
This suite will only run test that don't require doing any IO. Helpful because it runs quickly and isn't subject to any network problems.
Anonymous tests
---
`cabal test test-anon`
There's also a suite of tests that can be run anonymously without having to set up a user account and an empty subreddit.
Full IO tests
---
`cabal test test-io`
The `test` test suite will run the tests that don't rely on doing any IO, but the `test-io` should be used too to ensure that IO functions do what they're supposed to do. If you want to run the IO suite, add a file `test.cfg` to the `reddit/` directory, containing (one field per line):
- a reddit username
- a reddit password
- a subreddit name (the user should be a moderator for the subredit)