Class: RailLocatorApi::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/rail-locator-api/request.rb

Constant Summary collapse

AUTH_METHODS =
[:keycloak, :api_key, :base64]
DEFAULT_AUTH_METHOD =
:keycloak
DEFAULT_TIMEOUT =
60
DEFAULT_OPEN_TIMEOUT =
60

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(access_token: nil, refresh_token: nil, api_key: nil, api_user_email: nil, api_user_password: nil, api_endpoint: nil, api_auth_method: nil, timeout: nil, open_timeout: nil, proxy: nil, ssl_options: nil, faraday_adapter: nil, symbolize_keys: false, debug: false, logger: nil, test: false) ⇒ Request

Returns a new instance of Request.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/rail-locator-api/request.rb', line 11

def initialize(access_token: nil, refresh_token: nil, api_key: nil, api_user_email: nil, api_user_password: nil,
               api_endpoint: nil, api_auth_method: nil, timeout: nil, open_timeout: nil, proxy: nil, ssl_options: nil,
               faraday_adapter: nil, symbolize_keys: false, debug: false, logger: nil, test: false)

  @path_parts = []
  @api_key = api_key || self.class.api_key || ENV['RAIL_LOCATOR_API_KEY']
  @api_key = @api_key.strip if @api_key
  @api_key = RailLocatorApi::api_key if @api_key.nil?

  @access_token = access_token || self.class.access_token || RailLocatorApi.generate_access_token.try(:dig, "access_token")
  @access_token = @access_token.strip if @access_token
  @access_token = RailLocatorApi::generate_access_token.try(:dig, "access_token") if @access_token.nil?
  @refresh_token = refresh_token  || self.class.refresh_token
  @refresh_token = @refresh_token.strip if @refresh_token

  @api_user_email = api_user_email || ENV['API_USER_EMAIL'] || ""
  @api_user_password = api_user_password || ENV['API_USER_PASSWORD'] || ""
  @api_endpoint = api_endpoint || self.class.api_endpoint
  @api_endpoint = RailLocatorApi::api_endpoint if @api_endpoint.nil?
  @api_auth_method = api_auth_method || DEFAULT_AUTH_METHOD
  @timeout = timeout || self.class.timeout || DEFAULT_TIMEOUT
  @open_timeout = open_timeout || self.class.open_timeout || DEFAULT_OPEN_TIMEOUT
  @proxy = proxy || self.class.proxy || ENV['RAIL_LOCATOR_API_PROXY']
  @ssl_options = ssl_options || self.class.ssl_options || { version: "TLSv1_2" }
  @faraday_adapter = faraday_adapter || self.class.faraday_adapter || Faraday.default_adapter
  @symbolize_keys = symbolize_keys || self.class.symbolize_keys || false
  @debug = debug || self.class.debug || false
  @test = test || self.class.test || false
  @logger = logger || self.class.logger || ::Logger.new(STDOUT)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args) ⇒ Object



42
43
44
45
46
47
# File 'lib/rail-locator-api/request.rb', line 42

def method_missing(method, *args)
  @path_parts << method.to_s.gsub("_", "-").downcase
  @path_parts << args if args.length > 0
  @path_parts.flatten!
  self
end

Class Attribute Details

.access_tokenObject

Returns the value of attribute access_token.



96
97
98
# File 'lib/rail-locator-api/request.rb', line 96

def access_token
  @access_token
end

.api_auth_methodObject

Returns the value of attribute api_auth_method.



96
97
98
# File 'lib/rail-locator-api/request.rb', line 96

def api_auth_method
  @api_auth_method
end

.api_endpointObject

Returns the value of attribute api_endpoint.



96
97
98
# File 'lib/rail-locator-api/request.rb', line 96

def api_endpoint
  @api_endpoint
end

.api_keyObject

Returns the value of attribute api_key.



96
97
98
# File 'lib/rail-locator-api/request.rb', line 96

def api_key
  @api_key
end

.api_user_emailObject

Returns the value of attribute api_user_email.



96
97
98
# File 'lib/rail-locator-api/request.rb', line 96

def api_user_email
  @api_user_email
end

.api_user_passwordObject

Returns the value of attribute api_user_password.



96
97
98
# File 'lib/rail-locator-api/request.rb', line 96

def api_user_password
  @api_user_password
end

.debugObject

Returns the value of attribute debug.



96
97
98
# File 'lib/rail-locator-api/request.rb', line 96

def debug
  @debug
end

.faraday_adapterObject

Returns the value of attribute faraday_adapter.



96
97
98
# File 'lib/rail-locator-api/request.rb', line 96

def faraday_adapter
  @faraday_adapter
end

.loggerObject

Returns the value of attribute logger.



96
97
98
# File 'lib/rail-locator-api/request.rb', line 96

def logger
  @logger
end

.open_timeoutObject

Returns the value of attribute open_timeout.



96
97
98
# File 'lib/rail-locator-api/request.rb', line 96

def open_timeout
  @open_timeout
end

.proxyObject

Returns the value of attribute proxy.



96
97
98
# File 'lib/rail-locator-api/request.rb', line 96

def proxy
  @proxy
end

.refresh_tokenObject

Returns the value of attribute refresh_token.



96
97
98
# File 'lib/rail-locator-api/request.rb', line 96

def refresh_token
  @refresh_token
end

.ssl_optionsObject

Returns the value of attribute ssl_options.



96
97
98
# File 'lib/rail-locator-api/request.rb', line 96

def ssl_options
  @ssl_options
end

.symbolize_keysObject

Returns the value of attribute symbolize_keys.



96
97
98
# File 'lib/rail-locator-api/request.rb', line 96

def symbolize_keys
  @symbolize_keys
end

.testObject

Returns the value of attribute test.



96
97
98
# File 'lib/rail-locator-api/request.rb', line 96

def test
  @test
end

.timeoutObject

Returns the value of attribute timeout.



96
97
98
# File 'lib/rail-locator-api/request.rb', line 96

def timeout
  @timeout
end

Instance Attribute Details

#access_tokenObject

Returns the value of attribute access_token.



3
4
5
# File 'lib/rail-locator-api/request.rb', line 3

def access_token
  @access_token
end

#api_auth_methodObject

Returns the value of attribute api_auth_method.



3
4
5
# File 'lib/rail-locator-api/request.rb', line 3

def api_auth_method
  @api_auth_method
end

#api_endpointObject

Returns the value of attribute api_endpoint.



3
4
5
# File 'lib/rail-locator-api/request.rb', line 3

def api_endpoint
  @api_endpoint
end

#api_keyObject

Returns the value of attribute api_key.



3
4
5
# File 'lib/rail-locator-api/request.rb', line 3

def api_key
  @api_key
end

#api_user_emailObject

Returns the value of attribute api_user_email.



3
4
5
# File 'lib/rail-locator-api/request.rb', line 3

def api_user_email
  @api_user_email
end

#api_user_passwordObject

Returns the value of attribute api_user_password.



3
4
5
# File 'lib/rail-locator-api/request.rb', line 3

def api_user_password
  @api_user_password
end

#debugObject

Returns the value of attribute debug.



3
4
5
# File 'lib/rail-locator-api/request.rb', line 3

def debug
  @debug
end

#faraday_adapterObject

Returns the value of attribute faraday_adapter.



3
4
5
# File 'lib/rail-locator-api/request.rb', line 3

def faraday_adapter
  @faraday_adapter
end

#loggerObject

Returns the value of attribute logger.



3
4
5
# File 'lib/rail-locator-api/request.rb', line 3

def logger
  @logger
end

#open_timeoutObject

Returns the value of attribute open_timeout.



3
4
5
# File 'lib/rail-locator-api/request.rb', line 3

def open_timeout
  @open_timeout
end

#proxyObject

Returns the value of attribute proxy.



3
4
5
# File 'lib/rail-locator-api/request.rb', line 3

def proxy
  @proxy
end

#refresh_tokenObject

Returns the value of attribute refresh_token.



3
4
5
# File 'lib/rail-locator-api/request.rb', line 3

def refresh_token
  @refresh_token
end

#ssl_optionsObject

Returns the value of attribute ssl_options.



3
4
5
# File 'lib/rail-locator-api/request.rb', line 3

def ssl_options
  @ssl_options
end

#symbolize_keysObject

Returns the value of attribute symbolize_keys.



3
4
5
# File 'lib/rail-locator-api/request.rb', line 3

def symbolize_keys
  @symbolize_keys
end

#testObject

Returns the value of attribute test.



3
4
5
# File 'lib/rail-locator-api/request.rb', line 3

def test
  @test
end

#timeoutObject

Returns the value of attribute timeout.



3
4
5
# File 'lib/rail-locator-api/request.rb', line 3

def timeout
  @timeout
end

Class Method Details

.method_missing(sym, *args, &block) ⇒ Object



99
100
101
102
103
104
105
106
# File 'lib/rail-locator-api/request.rb', line 99

def method_missing(sym, *args, &block)
  new(access_token: self.access_token, refresh_token: self.refresh_token, api_key: self.api_key,
      api_user_email: self.api_user_email, api_user_password: self.api_user_email,
      api_auth_method: self.api_auth_method, api_endpoint: self.api_endpoint,
      timeout: self.timeout, open_timeout: self.open_timeout, faraday_adapter: self.faraday_adapter,
      symbolize_keys: self.symbolize_keys, debug: self.debug, proxy: self.proxy, ssl_options: self.ssl_options, logger: self.logger,
      test: self.test).send(sym, *args, &block)
end

.respond_to_missing?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


108
109
110
# File 'lib/rail-locator-api/request.rb', line 108

def respond_to_missing?(method_name, include_private = false)
  true
end

Instance Method Details

#create(params: nil, headers: nil, body: {}) ⇒ Object



65
66
67
68
69
# File 'lib/rail-locator-api/request.rb', line 65

def create(params: nil, headers: nil, body: {})
  APIRequest.new(builder: self).post(params: params, headers: headers, body: body)
ensure
  reset
end

#delete(params: nil, headers: nil, body: {}) ⇒ Object



83
84
85
86
87
# File 'lib/rail-locator-api/request.rb', line 83

def delete(params: nil, headers: nil, body: {})
  APIRequest.new(builder: self).post(params: params, headers: headers, body: {})
ensure
  reset
end

#pathObject



61
62
63
# File 'lib/rail-locator-api/request.rb', line 61

def path
  @path_parts.join('/')
end

#respond_to_missing?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/rail-locator-api/request.rb', line 49

def respond_to_missing?(method_name, include_private = false)
  true
end

#retrieve(params: nil, headers: nil, body: {}) ⇒ Object



77
78
79
80
81
# File 'lib/rail-locator-api/request.rb', line 77

def retrieve(params: nil, headers: nil, body: {})
  APIRequest.new(builder: self).get(params: params, headers: headers, body: body)
ensure
  reset
end

#send(*args) ⇒ Object



53
54
55
56
57
58
59
# File 'lib/rail-locator-api/request.rb', line 53

def send(*args)
  if args.length == 0
    method_missing(:send, args)
  else
    __send__(*args)
  end
end

#update(params: nil, headers: nil, body: {}) ⇒ Object



71
72
73
74
75
# File 'lib/rail-locator-api/request.rb', line 71

def update(params: nil, headers: nil, body: {})
  APIRequest.new(builder: self).post(params: params, headers: headers, body: body)
ensure
  reset
end