Module: ArtirixDataModels::DataGateway::ConnectionLoader

Defined in:
lib/artirix_data_models/gateways/data_gateway.rb

Defined Under Namespace

Classes: InvalidConnectionError

Class Method Summary collapse

Class Method Details

.connection(config: {}, url: nil, login: nil, password: nil, bearer_token: nil, token_hash: nil, log_body_request: nil, log_body_response: nil) ⇒ Object



261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
# File 'lib/artirix_data_models/gateways/data_gateway.rb', line 261

def connection(config: {}, url: nil, login: nil, password: nil, bearer_token: nil, token_hash: nil, log_body_request: nil, log_body_response: nil)
  url               ||= config.try :url
               ||= config.try :login
  password          ||= config.try :password
  bearer_token      ||= config.try :bearer_token
  token_hash        ||= config.try :token_hash
  log_body_request  ||= log_body_request.nil? ? config.try(:log_body_request) : log_body_request
  log_body_response ||= log_body_response.nil? ? config.try(:log_body_response) : log_body_response

  raise InvalidConnectionError, 'no url given, nor is it present in `config.url`' unless url.present?

  Faraday.new(url: url, request: { params_encoder: Faraday::FlatParamsEncoder }) do |faraday|
    faraday.request :url_encoded # form-encode POST params
    # faraday.response :logger # log requests to STDOUT
    faraday.response :logger, ::Logger.new(STDOUT), bodies: { request: log_body_request, response: log_body_response }

    if .present? || password.present?
      faraday.basic_auth(, password)
    elsif bearer_token.present?
      faraday.authorization :Bearer, bearer_token
    elsif token_hash.present?
      faraday.authorization :Token, token_hash
    end

    faraday.adapter Faraday.default_adapter
  end
end

.connection_by_config_key(config_key, **others) ⇒ Object



257
258
259
# File 'lib/artirix_data_models/gateways/data_gateway.rb', line 257

def connection_by_config_key(config_key, **others)
  connection config: ArtirixDataModels.configuration.send(config_key), **others
end

.default_connection(**others) ⇒ Object



253
254
255
# File 'lib/artirix_data_models/gateways/data_gateway.rb', line 253

def default_connection(**others)
  connection_by_config_key :data_gateway, **others
end