Sha256: f9c005a5b74ae2a7542f433b2666c15208d7ea86be6838368e153f9f84d70889

Contents?: true

Size: 1.33 KB

Versions: 9

Compression:

Stored size: 1.33 KB

Contents

require 'faraday'
require 'faraday_middleware'
require 'faraday/detailed_logger'
require 'netbox_client_ruby/error/local_error'

module NetboxClientRuby
  class Connection
    DEFAULT_OPTIONS = {
      request_encoding: :json
    }.freeze

    def self.new(options = {})
      build_faraday(**DEFAULT_OPTIONS.merge(options))
    end

    def self.headers
      headers = {}
      auth_token = auth_config.token
      headers['Authorization'] = "Token #{auth_token}".freeze if auth_token
      headers['X-Session-Key'] = NetboxClientRuby::Secrets.session_key if NetboxClientRuby::Secrets.session_key
      headers
    end

    def self.auth_config
      netbox_config.auth
    end

    def self.netbox_config
      NetboxClientRuby.config.netbox
    end

    private_class_method def self.build_faraday(request_encoding: :json)
      config = NetboxClientRuby.config
      Faraday.new(url: config.netbox.api_base_url, headers: headers) do |faraday|
        faraday.request request_encoding
        faraday.response config.faraday.logger if config.faraday.logger
        faraday.response :json, content_type: /\bjson$/
        faraday.options.merge NetboxClientRuby.config.faraday.request_options
        faraday.options.params_encoder = Faraday::FlatParamsEncoder
        faraday.adapter config.faraday.adapter || Faraday.default_adapter
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
netbox-client-ruby-0.9.0 lib/netbox_client_ruby/connection.rb
netbox-client-ruby-0.8.0 lib/netbox_client_ruby/connection.rb
netbox-client-ruby-0.7.1 lib/netbox_client_ruby/connection.rb
netbox-client-ruby-0.7.0 lib/netbox_client_ruby/connection.rb
netbox-client-ruby-0.6.0 lib/netbox_client_ruby/connection.rb
netbox-client-ruby-0.5.7 lib/netbox_client_ruby/connection.rb
netbox-client-ruby-0.5.6 lib/netbox_client_ruby/connection.rb
netbox-client-ruby-0.5.5 lib/netbox_client_ruby/connection.rb
netbox-client-ruby-0.5.4 lib/netbox_client_ruby/connection.rb