0.0
Low commit activity in last 3 years
No release in over a year
A batteries-included API wrapper for reddit.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 2.0
~> 2.14
~> 0.10
~> 13.0
~> 3.5
~> 1.26
~> 0.13
~> 6.1
~> 3.14
~> 0.9.9

Runtime

>= 4.0, < 6.0
~> 0.8.1
 Project Readme


Gem Version Build Status Gem Downloads

Redd is a batteries-included API wrapper for reddit.


Features

  • Supports most of the reddit API, including live threads and the beta mod-mail.
  • Includes support for streaming new posts and comments.
  • Built-in rate limiting and error handling.
  • Automatic retrying of failed requests.

Demo

Reddit Bot

require 'redd'

session = Redd.it(
  user_agent: 'Redd:RandomBot:v1.0.0 (by /u/Mustermind)',
  client_id:  'PQgS0UaX9l70oQ',
  secret:     'PsF_kVZrW8nSVCG5kNsIgl-AaXE',
  username:   'RandomBot',
  password:   'hunter2'
)

session.subreddit('all').comments.stream do |comment|
  if comment.body.include?('roll a dice')
    comment.reply("It's a #{rand(1..6)}!")
  elsif comment.body.include?('flip a coin')
    comment.reply("It's a #{%w(heads tails).sample}!")
  end
end

Web Application

require 'sinatra'
require 'redd/middleware'

use Rack::Session::Cookie
use Redd::Middleware,
    user_agent:   'Redd:Username App:v1.0.0 (by /u/Mustermind)',
    client_id:    'PQgS0UaX9l70oQ',
    secret:       'PsF_kVZrW8nSVCG5kNsIgl-AaXE',
    redirect_uri: 'http://localhost:4567/auth/reddit/callback',
    scope:        %w(identity),
    via:          '/auth/reddit'

get '/' do
  reddit = request.env['redd.session']

  if reddit
    "Hello /u/#{reddit.me.name}! <a href='/logout'>Logout</a>"
  else
    "<a href='/auth/reddit'>Sign in with reddit</a>"
  end
end

get '/auth/reddit/callback' do
  redirect to('/') unless request.env['redd.error']
  "Error: #{request.env['redd.error'].message} (<a href='/'>Back</a>)"
end

get '/logout' do
  request.env['redd.session'] = nil
  redirect to('/')
end

FAQ

Are those examples fully functional?

Yes, that's all there is to it! You don't need to handle rate-limiting, refresh access tokens or protect against issues on reddit's end (like 5xx errors).

Where can I find the documentation?

Gem / GitHub

Where can I ask for help if I'm having issues?

Check out the official subreddit or raise a GitHub issue.

How do I request a feature / contribute?

Take a look at CONTRIBUTING.md.

How can I contact you?

Reddit / Email


This project is available under the MIT License. See LICENSE.txt for more details.
The Redd logo uses the FARRAY font by Coquet Adrien.