class RedditApi::Client
Constants
- DEFAULT_MAX_FAILURES
- DEFAULT_SLEEP_TIME
Attributes
client[R]
failures[RW]
max_failures[R]
null_response_factory[R]
parser[R]
requestor[R]
sleep_time[RW]
Public Class Methods
new(args = {})
click to toggle source
# File lib/reddit_api/client.rb, line 20 def initialize(args = {}) @client = args.fetch(:client, HTTParty) @requestor = args.fetch(:requestor, RedditApi::Requestor.new(client: client)) @parser = args.fetch(:parser, RedditApi::ResponseParser) @null_response_factory = RedditApi:: NullResponse @failures = args.fetch(:failures, 0) @max_failures = args.fetch(:max_fail, DEFAULT_MAX_FAILURES) @sleep_time = args.fetch(:sleep_time, DEFAULT_SLEEP_TIME) end
sleep_time()
click to toggle source
# File lib/reddit_api/client.rb, line 6 def self.sleep_time if ENV["ENVIRONMENT"] == "TEST" 0 else 2 end end
Public Instance Methods
get(query)
click to toggle source
# File lib/reddit_api/client.rb, line 30 def get(query) while query.capture_count < query.count && failures < max_failures response = send_request(query) response = parser.parse_response(response, query.count) update_progress(query, response) end reset_failures end
Private Instance Methods
reset_failures()
click to toggle source
# File lib/reddit_api/client.rb, line 68 def reset_failures self.failures = 0 end
send_request(query)
click to toggle source
# File lib/reddit_api/client.rb, line 44 def send_request(query) sleep(sleep_time) request = requestor.build(query) response = client.get(*request) response || null_response_factory.new end
update_failures(captured_before, captured_after, count)
click to toggle source
# File lib/reddit_api/client.rb, line 62 def update_failures(captured_before, captured_after, count) if captured_before >= captured_after self.failures += 1 end end
update_progress(query, response)
click to toggle source
# File lib/reddit_api/client.rb, line 51 def update_progress(query, response) captured_before = query.capture_count update_query(query, response) captured_after = query.capture_count update_failures(captured_before, captured_after, query.count) end
update_query(query, response)
click to toggle source
# File lib/reddit_api/client.rb, line 58 def update_query(query, response) query.add_records(response) end