class Brutalismbot::Reddit::Resource

Attributes

uri[R]
user_agent[R]

Public Class Methods

new(uri:nil, user_agent:nil) click to toggle source
# File lib/brutalismbot/reddit/resource.rb, line 14
def initialize(uri:nil, user_agent:nil)
  @uri        = uri        || "https://www.reddit.com/r/brutalism/new.json"
  @user_agent = user_agent || "Brutalismbot v#{Brutalismbot::VERSION}"
end

Public Instance Methods

all() click to toggle source
# File lib/brutalismbot/reddit/resource.rb, line 37
def all
  to_a
end
each() { |post| ... } click to toggle source
# File lib/brutalismbot/reddit/resource.rb, line 19
def each
  Brutalismbot.logger.info("GET #{@uri}")
  uri = URI.parse(@uri)
  Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == "https") do |http|
    request  = Net::HTTP::Get.new(uri, "user-agent" => @user_agent)
    response = JSON.parse(http.request(request).body)
    children = response.dig("data", "children") || []
    children.each do |child|
      item = child.transform_keys(&:to_sym)
      post = Post.new(**item)
      unless post.is_self?
        Brutalismbot.logger.warn("NO MEDIA URLs for #{post.permalink}") if post.media_urls.empty?
        yield post
      end
    end
  end
end
last() click to toggle source
# File lib/brutalismbot/reddit/resource.rb, line 41
def last
  to_a.last
end