Class: ActiveRecordApi::Request::Connection
Instance Attribute Summary collapse
Attributes inherited from Credentials
#email, #headers, #host, #password, #token, #token_path
Instance Method Summary
collapse
Methods inherited from Credentials
#config, #credentials, #credentials_config
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
35
36
37
|
# File 'lib/active_record_api/request/connection.rb', line 35
def full_url
@full_url ||= "#{strip_trailing_slash(host)}#{strip_double_slash("/#{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
|
#timeout ⇒ Object
Returns the value of attribute timeout.
8
9
10
|
# File 'lib/active_record_api/request/connection.rb', line 8
def timeout
@timeout
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
32
33
|
# 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] = timeout || 5
builder.request :json
builder.request :url_encoded
builder.request :retry, max: 5, interval: 0.05, interval_randomness: 0.5, backoff_factor: 2, exceptions: [ActiveRecordApi::Request::AuthError]
builder.use FaradayCacheServiceDown, cache_store
builder.use :http_cache, http_cache_options
builder.use FaradayFollowNextLinks, 5
builder.use FaradayMiddleware::FollowRedirects, standards_compliant: true
builder.use FaradayAuthTokenRetry, credentials: credentials, host: host, token_path: token_path, debug: debug, timeout: timeout
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
44
45
46
|
# File 'lib/active_record_api/request/connection.rb', line 44
def full_url_with_params(params: {}, id: nil)
"#{full_url}/#{id}?#{params.to_query}"
end
|
#http_cache_options ⇒ Object
62
63
64
65
66
|
# File 'lib/active_record_api/request/connection.rb', line 62
def http_cache_options
http_cache_options = { shared_cache: false, store: cache_store }
http_cache_options[:logger] = Rails.logger if debug
http_cache_options
end
|
#service_url(suffix) ⇒ Object
39
40
41
42
|
# File 'lib/active_record_api/request/connection.rb', line 39
def service_url(suffix)
parts = full_url.split('/')
"#{parts[0]}//#{parts[2]}/#{parts[3]}/#{parts[4]}#{strip_double_slash("/#{suffix}")}"
end
|
#strip_double_slash(string) ⇒ Object
68
69
70
|
# File 'lib/active_record_api/request/connection.rb', line 68
def strip_double_slash(string)
string.gsub(%r{//}, '/')
end
|
#strip_trailing_slash(string) ⇒ Object
72
73
74
|
# File 'lib/active_record_api/request/connection.rb', line 72
def strip_trailing_slash(string)
string.sub(%r{(\/)+$}, '')
end
|
#symbolize_array_response(response) ⇒ Object
57
58
59
60
|
# File 'lib/active_record_api/request/connection.rb', line 57
def symbolize_array_response(response)
return response unless response.first.is_a? Hash
response.map!(&:deep_symbolize_keys!)
end
|
#symbolize_response(response) ⇒ Object
48
49
50
51
52
53
54
55
|
# File 'lib/active_record_api/request/connection.rb', line 48
def symbolize_response(response)
return response if response.is_a? String
if response.is_a?(Array)
symbolize_array_response(response)
else
response.try(:deep_symbolize_keys!)
end
end
|