Sha256: 758e70c378c12be655280a6e386d46128a38642dfe7687500e0a50f0151fc807

Contents?: true

Size: 1.65 KB

Versions: 2

Compression:

Stored size: 1.65 KB

Contents

# frozen_string_literal: true

require_relative "../interceptors/headers"

module Aserto
  module Directory
    module V3
      class Config
        attr_reader :reader, :writer, :importer, :exporter, :model

        def initialize(config)
          @base = {
            url: config[:url] || "directory.prod.aserto.com:8443",
            api_key: config[:api_key],
            tenant_id: config[:tenant_id],
            cert_path: config[:cert_path]
          }

          @reader = build(**(config[:reader] || {}))
          @writer = build(**(config[:writer] || {}))
          @importer = build(**(config[:importer] || {}))
          @exporter = build(**(config[:exporter] || {}))
          @model = build(**(config[:model] || {}))
        end

        private

        class BaseConfig
          attr_reader :url, :credentials, :interceptors

          def initialize(url, credentials, interceptors)
            @url = url
            @credentials = credentials
            @interceptors = interceptors
          end
        end

        def build(
          url: @base[:url],
          api_key: @base[:api_key],
          tenant_id: @base[:tenant_id],
          cert_path: @base[:cert_path]
        )

          interceptors = []
          interceptors = [Interceptors::Headers.new(api_key, tenant_id)] if !api_key.nil? && !tenant_id.nil?
          BaseConfig.new(url, load_creds(cert_path), interceptors)
        end

        def load_creds(cert_path)
          if cert_path && File.file?(cert_path)
            GRPC::Core::ChannelCredentials.new(File.read(cert_path))
          else
            GRPC::Core::ChannelCredentials.new
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
aserto-0.30.1 lib/aserto/directory/v3/config.rb
aserto-0.30.0 lib/aserto/directory/v3/config.rb