Sha256: 4dcf9706128761b59f97a2bf819371e6f80e89167de73a8ba9ccd0a38d70cf78

Contents?: true

Size: 1.07 KB

Versions: 3

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true

module FastlyNsq
  class TlsOptions
    ##
    # Return hash of TLS options for creating an NSQ connection.
    # @param context [Hash]
    def self.as_hash(context = nil)
      new(context).to_h
    end

    def initialize(context = nil)
      @context = context || {}
    end

    def to_h
      merge_contexts
      if @context.empty?
        {}
      else
        {
          tls_v1: true,
          tls_options: @context
        }
      end
    end

    private

    def env_key
      ENV.fetch("NSQ_SSL_KEY", nil)
    end

    def env_certificate
      ENV.fetch("NSQ_SSL_CERTIFICATE", nil)
    end

    def env_ca_certificate
      ENV.fetch("NSQ_SSL_CA_CERTIFICATE", nil)
    end

    def verify_mode
      ENV.fetch("NSQ_SSL_VERIFY_MODE", nil)
    end

    def env_default_hash
      {
        key: env_key,
        certificate: env_certificate,
        ca_certificate: env_ca_certificate,
        verify_mode: verify_mode
      }
    end

    def merge_contexts
      @context = env_default_hash.merge(@context).delete_if { |_, v| v.nil? }
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fastly_nsq-1.18.1 lib/fastly_nsq/tls_options.rb
fastly_nsq-1.18.0 lib/fastly_nsq/tls_options.rb
fastly_nsq-1.17.1 lib/fastly_nsq/tls_options.rb