class RedditApi::Requestor

Attributes

agent[R]
base_url[R]
client[R]
id[R]
password[R]
secret[R]
username[R]

Public Class Methods

new(args = {}) click to toggle source
# File lib/reddit_api/requestor.rb, line 5
def initialize(args = {})
  @agent = ENV["REDDIT_AGENT"]
  @base_url = "https://oauth.reddit.com/"
  @client = args.fetch(:client, HTTParty)
  @id = ENV["REDDIT_ID"]
  @password = ENV["REDDIT_PASSWORD"]
  @secret = ENV["REDDIT_SECRET"]
  @username = ENV["REDDIT_USERNAME"]
end

Public Instance Methods

build(query) click to toggle source
# File lib/reddit_api/requestor.rb, line 15
def build(query)
  url = base_url + query.endpoint
  headers = generate_headers
  api_query = generate_query(query)
  [url, { headers: headers, query: api_query }]
end

Private Instance Methods

access_token() click to toggle source
# File lib/reddit_api/requestor.rb, line 52
def access_token
  url = "https://www.reddit.com/api/v1/access_token"
  basic_auth = { username: id,
                 password: secret }
  headers = { "user-agent" => agent }
  body = { grant_type:  "password",
           username:  username,
           password: password }
  response = client.post(url,
                         basic_auth: basic_auth,
                         headers: headers,
                         body: body)
  response["access_token"]
end
build_after(resource_type, offset_id) click to toggle source
# File lib/reddit_api/requestor.rb, line 47
def build_after(resource_type, offset_id)
  prefix = TYPE_PREFIXES[resource_type]
  "#{prefix}_#{offset_id}"
end
generate_after(resource_type, offset_id) click to toggle source
# File lib/reddit_api/requestor.rb, line 39
def generate_after(resource_type, offset_id)
  if offset_id
    build_after(resource_type, offset_id)
  else
    ""
  end
end
generate_headers() click to toggle source
# File lib/reddit_api/requestor.rb, line 25
def generate_headers
  {
    "Authorization" => "bearer #{access_token}",
    "user-agent" => agent
  }
end
generate_query(query) click to toggle source
# File lib/reddit_api/requestor.rb, line 32
def generate_query(query)
  {
    limit: query.count,
    after: generate_after(query.resource_type, query.offset_id)
  }
end