Class: RailLocatorApi::Request
- Inherits:
-
Object
- Object
- RailLocatorApi::Request
- 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
-
.access_token ⇒ Object
Returns the value of attribute access_token.
-
.api_auth_method ⇒ Object
Returns the value of attribute api_auth_method.
-
.api_endpoint ⇒ Object
Returns the value of attribute api_endpoint.
-
.api_key ⇒ Object
Returns the value of attribute api_key.
-
.api_user_email ⇒ Object
Returns the value of attribute api_user_email.
-
.api_user_password ⇒ Object
Returns the value of attribute api_user_password.
-
.debug ⇒ Object
Returns the value of attribute debug.
-
.faraday_adapter ⇒ Object
Returns the value of attribute faraday_adapter.
-
.logger ⇒ Object
Returns the value of attribute logger.
-
.open_timeout ⇒ Object
Returns the value of attribute open_timeout.
-
.proxy ⇒ Object
Returns the value of attribute proxy.
-
.refresh_token ⇒ Object
Returns the value of attribute refresh_token.
-
.ssl_options ⇒ Object
Returns the value of attribute ssl_options.
-
.symbolize_keys ⇒ Object
Returns the value of attribute symbolize_keys.
-
.test ⇒ Object
Returns the value of attribute test.
-
.timeout ⇒ Object
Returns the value of attribute timeout.
-
.without_ratelimit ⇒ Object
Returns the value of attribute without_ratelimit.
Instance Attribute Summary collapse
-
#access_token ⇒ Object
Returns the value of attribute access_token.
-
#api_auth_method ⇒ Object
Returns the value of attribute api_auth_method.
-
#api_endpoint ⇒ Object
Returns the value of attribute api_endpoint.
-
#api_key ⇒ Object
Returns the value of attribute api_key.
-
#api_user_email ⇒ Object
Returns the value of attribute api_user_email.
-
#api_user_password ⇒ Object
Returns the value of attribute api_user_password.
-
#debug ⇒ Object
Returns the value of attribute debug.
-
#faraday_adapter ⇒ Object
Returns the value of attribute faraday_adapter.
-
#logger ⇒ Object
Returns the value of attribute logger.
-
#open_timeout ⇒ Object
Returns the value of attribute open_timeout.
-
#proxy ⇒ Object
Returns the value of attribute proxy.
-
#refresh_token ⇒ Object
Returns the value of attribute refresh_token.
-
#ssl_options ⇒ Object
Returns the value of attribute ssl_options.
-
#symbolize_keys ⇒ Object
Returns the value of attribute symbolize_keys.
-
#test ⇒ Object
Returns the value of attribute test.
-
#timeout ⇒ Object
Returns the value of attribute timeout.
-
#without_ratelimit ⇒ Object
Returns the value of attribute without_ratelimit.
Class Method Summary collapse
- .method_missing(sym, *args, &block) ⇒ Object
- .respond_to_missing?(method_name, include_private = false) ⇒ Boolean
Instance Method Summary collapse
- #create(params: nil, headers: nil, body: {}) ⇒ Object
- #delete(params: nil, headers: nil, body: {}) ⇒ Object
-
#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, without_ratelimit: false, logger: nil, test: false) ⇒ Request
constructor
A new instance of Request.
- #method_missing(method, *args) ⇒ Object
- #path ⇒ Object
- #respond_to_missing?(method_name, include_private = false) ⇒ Boolean
- #retrieve(params: nil, headers: nil, body: {}) ⇒ Object
- #send(*args) ⇒ Object
- #update(params: nil, headers: nil, body: {}) ⇒ Object
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, without_ratelimit: false, logger: nil, test: false) ⇒ Request
Returns a new instance of Request.
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 41 42 43 |
# File 'lib/rail-locator-api/request.rb', line 12 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, without_ratelimit: 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'] = || self.class. || { 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 @without_ratelimit = without_ratelimit || self.class.without_ratelimit @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
45 46 47 48 49 50 |
# File 'lib/rail-locator-api/request.rb', line 45 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_token ⇒ Object
Returns the value of attribute access_token.
99 100 101 |
# File 'lib/rail-locator-api/request.rb', line 99 def access_token @access_token end |
.api_auth_method ⇒ Object
Returns the value of attribute api_auth_method.
99 100 101 |
# File 'lib/rail-locator-api/request.rb', line 99 def api_auth_method @api_auth_method end |
.api_endpoint ⇒ Object
Returns the value of attribute api_endpoint.
99 100 101 |
# File 'lib/rail-locator-api/request.rb', line 99 def api_endpoint @api_endpoint end |
.api_key ⇒ Object
Returns the value of attribute api_key.
99 100 101 |
# File 'lib/rail-locator-api/request.rb', line 99 def api_key @api_key end |
.api_user_email ⇒ Object
Returns the value of attribute api_user_email.
99 100 101 |
# File 'lib/rail-locator-api/request.rb', line 99 def api_user_email @api_user_email end |
.api_user_password ⇒ Object
Returns the value of attribute api_user_password.
99 100 101 |
# File 'lib/rail-locator-api/request.rb', line 99 def api_user_password @api_user_password end |
.debug ⇒ Object
Returns the value of attribute debug.
99 100 101 |
# File 'lib/rail-locator-api/request.rb', line 99 def debug @debug end |
.faraday_adapter ⇒ Object
Returns the value of attribute faraday_adapter.
99 100 101 |
# File 'lib/rail-locator-api/request.rb', line 99 def faraday_adapter @faraday_adapter end |
.logger ⇒ Object
Returns the value of attribute logger.
99 100 101 |
# File 'lib/rail-locator-api/request.rb', line 99 def logger @logger end |
.open_timeout ⇒ Object
Returns the value of attribute open_timeout.
99 100 101 |
# File 'lib/rail-locator-api/request.rb', line 99 def open_timeout @open_timeout end |
.proxy ⇒ Object
Returns the value of attribute proxy.
99 100 101 |
# File 'lib/rail-locator-api/request.rb', line 99 def proxy @proxy end |
.refresh_token ⇒ Object
Returns the value of attribute refresh_token.
99 100 101 |
# File 'lib/rail-locator-api/request.rb', line 99 def refresh_token @refresh_token end |
.ssl_options ⇒ Object
Returns the value of attribute ssl_options.
99 100 101 |
# File 'lib/rail-locator-api/request.rb', line 99 def end |
.symbolize_keys ⇒ Object
Returns the value of attribute symbolize_keys.
99 100 101 |
# File 'lib/rail-locator-api/request.rb', line 99 def symbolize_keys @symbolize_keys end |
.test ⇒ Object
Returns the value of attribute test.
99 100 101 |
# File 'lib/rail-locator-api/request.rb', line 99 def test @test end |
.timeout ⇒ Object
Returns the value of attribute timeout.
99 100 101 |
# File 'lib/rail-locator-api/request.rb', line 99 def timeout @timeout end |
.without_ratelimit ⇒ Object
Returns the value of attribute without_ratelimit.
99 100 101 |
# File 'lib/rail-locator-api/request.rb', line 99 def without_ratelimit @without_ratelimit end |
Instance Attribute Details
#access_token ⇒ Object
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_method ⇒ Object
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_endpoint ⇒ Object
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_key ⇒ Object
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_email ⇒ Object
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_password ⇒ Object
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 |
#debug ⇒ Object
Returns the value of attribute debug.
3 4 5 |
# File 'lib/rail-locator-api/request.rb', line 3 def debug @debug end |
#faraday_adapter ⇒ Object
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 |
#logger ⇒ Object
Returns the value of attribute logger.
3 4 5 |
# File 'lib/rail-locator-api/request.rb', line 3 def logger @logger end |
#open_timeout ⇒ Object
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 |
#proxy ⇒ Object
Returns the value of attribute proxy.
3 4 5 |
# File 'lib/rail-locator-api/request.rb', line 3 def proxy @proxy end |
#refresh_token ⇒ Object
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_options ⇒ Object
Returns the value of attribute ssl_options.
3 4 5 |
# File 'lib/rail-locator-api/request.rb', line 3 def end |
#symbolize_keys ⇒ Object
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 |
#test ⇒ Object
Returns the value of attribute test.
3 4 5 |
# File 'lib/rail-locator-api/request.rb', line 3 def test @test end |
#timeout ⇒ Object
Returns the value of attribute timeout.
3 4 5 |
# File 'lib/rail-locator-api/request.rb', line 3 def timeout @timeout end |
#without_ratelimit ⇒ Object
Returns the value of attribute without_ratelimit.
3 4 5 |
# File 'lib/rail-locator-api/request.rb', line 3 def without_ratelimit @without_ratelimit end |
Class Method Details
.method_missing(sym, *args, &block) ⇒ Object
103 104 105 106 107 108 109 110 111 |
# File 'lib/rail-locator-api/request.rb', line 103 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, without_ratelimit: self.without_ratelimit, proxy: self.proxy, ssl_options: self., logger: self.logger, test: self.test).send(sym, *args, &block) end |
.respond_to_missing?(method_name, include_private = false) ⇒ Boolean
113 114 115 |
# File 'lib/rail-locator-api/request.rb', line 113 def respond_to_missing?(method_name, include_private = false) true end |
Instance Method Details
#create(params: nil, headers: nil, body: {}) ⇒ Object
68 69 70 71 72 |
# File 'lib/rail-locator-api/request.rb', line 68 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
86 87 88 89 90 |
# File 'lib/rail-locator-api/request.rb', line 86 def delete(params: nil, headers: nil, body: {}) APIRequest.new(builder: self).post(params: params, headers: headers, body: {}) ensure reset end |
#path ⇒ Object
64 65 66 |
# File 'lib/rail-locator-api/request.rb', line 64 def path @path_parts.join('/') end |
#respond_to_missing?(method_name, include_private = false) ⇒ Boolean
52 53 54 |
# File 'lib/rail-locator-api/request.rb', line 52 def respond_to_missing?(method_name, include_private = false) true end |
#retrieve(params: nil, headers: nil, body: {}) ⇒ Object
80 81 82 83 84 |
# File 'lib/rail-locator-api/request.rb', line 80 def retrieve(params: nil, headers: nil, body: {}) APIRequest.new(builder: self).get(params: params, headers: headers, body: body) ensure reset end |
#send(*args) ⇒ Object
56 57 58 59 60 61 62 |
# File 'lib/rail-locator-api/request.rb', line 56 def send(*args) if args.length == 0 method_missing(:send, args) else __send__(*args) end end |
#update(params: nil, headers: nil, body: {}) ⇒ Object
74 75 76 77 78 |
# File 'lib/rail-locator-api/request.rb', line 74 def update(params: nil, headers: nil, body: {}) APIRequest.new(builder: self).post(params: params, headers: headers, body: body) ensure reset end |