class Reddit::Base::BasicClient
Basic client that doesn't make assumptions regarding response type.
The reddit API isn't always consistent with its response types so may return HTML even when JSON is requested. Error pages are a common and unavoidable example.
Constants
- DEFAULT_OPTIONS
- DEFAULT_URL
- DEFAULT_URL_SECURE
Attributes
connection[R]
options[R]
Public Class Methods
new(options)
click to toggle source
# File lib/reddit/base/basic_client.rb, line 47 def initialize(options) build_connection(options) end
Public Instance Methods
build_connection(options)
click to toggle source
# File lib/reddit/base/basic_client.rb, line 25 def build_connection(options) @options = DEFAULT_OPTIONS.merge(options) @headers = @options.delete(:headers) @retries = @options.delete(:retries) @secure = @options.delete(:secure) @url = @options[:url] || (@secure ? DEFAULT_URL_SECURE : DEFAULT_URL) @connection = Faraday.new(url: @url, headers: @headers) do |builder| builder.request :multipart builder.request :url_encoded builder.request :reddit_authentication, @options builder.request :retry, max: @retries, interval: 2, exceptions: FaradayMiddleware::Reddit::RETRIABLE_ERRORS builder.response :follow_redirects builder.response :reddit_raise_error builder.use :reddit_modhash builder.use :reddit_rate_limit builder.adapter Faraday.default_adapter end end