Class: ActiveRecordApi::Request::Connection
Instance Attribute Summary collapse
Attributes inherited from Credentials
#email, #host, #password, #token
Instance Method Summary
collapse
Methods inherited from Credentials
#config, #credentials, #headers, #token_path
Instance Attribute Details
#cache_store ⇒ Object
Returns the value of attribute cache_store.
8
9
10
|
# File 'lib/active_record_api/request/connection.rb', line 8
def cache_store
@cache_store
end
|
#debug ⇒ Object
Returns the value of attribute debug.
8
9
10
|
# File 'lib/active_record_api/request/connection.rb', line 8
def debug
@debug
end
|
#full_url ⇒ Object
33
34
35
|
# File 'lib/active_record_api/request/connection.rb', line 33
def full_url
@full_url ||= "#{strip_trailing_slash(host)}/#{strip_trailing_slash(path)}"
end
|
#path ⇒ Object
Returns the value of attribute path.
8
9
10
|
# File 'lib/active_record_api/request/connection.rb', line 8
def path
@path
end
|
Instance Method Details
#authenticated_connection ⇒ Object
11
12
13
14
|
# File 'lib/active_record_api/request/connection.rb', line 11
def authenticated_connection
connection. = connection..merge()
connection
end
|
#connection ⇒ Object
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/active_record_api/request/connection.rb', line 16
def connection
@connection ||= Faraday.new do |builder|
builder.options[:open_timeout] = 2
builder.options[:timeout] = 5
builder.request :json
builder.request :url_encoded
builder.request :retry, max: 5, interval: 0.05, interval_randomness: 0.5, backoff_factor: 2
builder.use FaradayCacheServiceDown, cache_store
builder.use :http_cache, http_cache_options
builder.use FaradayFollowNextLinks, 5
builder.response :json, content_type: /\bjson$/
builder.response :raise_error
builder.response :logger if debug
builder.adapter Faraday.default_adapter
end
end
|
#full_url_with_params(params: {}, id: nil) ⇒ Object
37
38
39
|
# File 'lib/active_record_api/request/connection.rb', line 37
def full_url_with_params(params: {}, id: nil)
"#{full_url}/#{id}?#{params.to_query}"
end
|
#http_cache_options ⇒ Object
51
52
53
|
# File 'lib/active_record_api/request/connection.rb', line 51
def http_cache_options
{ shared_cache: false, store: cache_store }
end
|
#strip_trailing_slash(string) ⇒ Object
55
56
57
|
# File 'lib/active_record_api/request/connection.rb', line 55
def strip_trailing_slash(string)
string.sub(%r{(\/)+$}, '')
end
|
#symbolize_response(response) ⇒ Object
41
42
43
44
45
46
47
48
49
|
# File 'lib/active_record_api/request/connection.rb', line 41
def symbolize_response(response)
return response if response.is_a? String
if response.is_a? Array
return response if response.first.is_a? Array
response.map!(&:deep_symbolize_keys!)
else
response.try(:deep_symbolize_keys!)
end
end
|