class RedditApi::Subreddits

Attributes

client[R]
query_factory[R]
subreddit_factory[R]

Public Class Methods

new() click to toggle source
# File lib/reddit_api/subreddits.rb, line 5
def initialize
  @client = RedditApi::Client.new
  @subreddit_factory = RedditApi::Subreddit
  @query_factory =  RedditApi::Query
end

Public Instance Methods

data_for(subreddit_name) click to toggle source
# File lib/reddit_api/subreddits.rb, line 16
def data_for(subreddit_name)
  query = build_singular_query(subreddit_name)
  client.get(query)
  build_subreddit(query.captured_records.first)
end
top(count) click to toggle source
# File lib/reddit_api/subreddits.rb, line 11
def top(count)
  subreddits_data = top_data(count)
  build_all_subreddits(subreddits_data)
end

Private Instance Methods

build_all_subreddits(subreddits_data) click to toggle source
# File lib/reddit_api/subreddits.rb, line 45
def build_all_subreddits(subreddits_data)
  subreddits_data.map! do |subreddit_data|
    build_subreddit(subreddit_data["data"])
  end
end
build_plural_query(count) click to toggle source
# File lib/reddit_api/subreddits.rb, line 31
def build_plural_query(count)
  endpoint = "subreddits/popular.json"
  query_factory.new(count: count,
                    endpoint: endpoint,
                    resource: :subreddit)
end
build_singular_query(subreddit_name) click to toggle source
# File lib/reddit_api/subreddits.rb, line 38
def build_singular_query(subreddit_name)
  endpoint = "r/#{subreddit_name}/about.json"
  query_factory.new(count: 1,
                    endpoint: endpoint,
                    resource: :subreddit)
end
build_subreddit(subreddit_data) click to toggle source
# File lib/reddit_api/subreddits.rb, line 51
def build_subreddit(subreddit_data)
  subreddit_factory.new(subreddit_data)
end
top_data(count) click to toggle source
# File lib/reddit_api/subreddits.rb, line 25
def top_data(count)
  query = build_plural_query(count)
  client.get(query)
  query.captured_records
end