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, faraday_build_proc: 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
288
289
290
291
# 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, faraday_build_proc: 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|
    if faraday_build_proc.present? && faraday_build_proc.respond_to?(:call)
      faraday_build_proc.call faraday
    end

    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