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