Class: Protobuf::Nats::Config
- Inherits:
-
Object
- Object
- Protobuf::Nats::Config
- Defined in:
- lib/protobuf/nats/config.rb
Constant Summary collapse
- CONFIG_MUTEX =
::Mutex.new
- DEFAULTS =
{ :connect_timeout => nil, :max_reconnect_attempts => 60_000, :servers => nil, :tls_client_cert => nil, :tls_client_key => nil, :tls_ca_cert => nil, :uses_tls => false, :subscription_key_replacements => [], }.freeze
Instance Attribute Summary collapse
-
#connect_timeout ⇒ Object
Returns the value of attribute connect_timeout.
-
#max_reconnect_attempts ⇒ Object
Returns the value of attribute max_reconnect_attempts.
-
#servers ⇒ Object
Returns the value of attribute servers.
-
#subscription_key_replacements ⇒ Object
Returns the value of attribute subscription_key_replacements.
-
#tls_ca_cert ⇒ Object
Returns the value of attribute tls_ca_cert.
-
#tls_client_cert ⇒ Object
Returns the value of attribute tls_client_cert.
-
#tls_client_key ⇒ Object
Returns the value of attribute tls_client_key.
-
#uses_tls ⇒ Object
Returns the value of attribute uses_tls.
Instance Method Summary collapse
- #connection_options(reload = false) ⇒ Object
-
#initialize ⇒ Config
constructor
A new instance of Config.
- #load_from_yml(reload = false) ⇒ Object
- #make_subscription_key_replacements(subscription_key) ⇒ Object
- #new_tls_context ⇒ Object
Constructor Details
Instance Attribute Details
#connect_timeout ⇒ Object
Returns the value of attribute connect_timeout.
7 8 9 |
# File 'lib/protobuf/nats/config.rb', line 7 def connect_timeout @connect_timeout end |
#max_reconnect_attempts ⇒ Object
Returns the value of attribute max_reconnect_attempts.
7 8 9 |
# File 'lib/protobuf/nats/config.rb', line 7 def max_reconnect_attempts @max_reconnect_attempts end |
#servers ⇒ Object
Returns the value of attribute servers.
7 8 9 |
# File 'lib/protobuf/nats/config.rb', line 7 def servers @servers end |
#subscription_key_replacements ⇒ Object
Returns the value of attribute subscription_key_replacements.
7 8 9 |
# File 'lib/protobuf/nats/config.rb', line 7 def subscription_key_replacements @subscription_key_replacements end |
#tls_ca_cert ⇒ Object
Returns the value of attribute tls_ca_cert.
7 8 9 |
# File 'lib/protobuf/nats/config.rb', line 7 def tls_ca_cert @tls_ca_cert end |
#tls_client_cert ⇒ Object
Returns the value of attribute tls_client_cert.
7 8 9 |
# File 'lib/protobuf/nats/config.rb', line 7 def tls_client_cert @tls_client_cert end |
#tls_client_key ⇒ Object
Returns the value of attribute tls_client_key.
7 8 9 |
# File 'lib/protobuf/nats/config.rb', line 7 def tls_client_key @tls_client_key end |
#uses_tls ⇒ Object
Returns the value of attribute uses_tls.
7 8 9 |
# File 'lib/protobuf/nats/config.rb', line 7 def uses_tls @uses_tls end |
Instance Method Details
#connection_options(reload = false) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/protobuf/nats/config.rb', line 54 def (reload = false) @connection_options = false if reload @connection_options ||= begin = { servers: servers, max_reconnect_attempts: max_reconnect_attempts, uses_tls: uses_tls, tls_client_cert: tls_client_cert, tls_client_key: tls_client_key, tls_ca_cert: tls_ca_cert, connect_timeout: connect_timeout, subscription_key_replacements: subscription_key_replacements, } [:tls] = {:context => new_tls_context} if uses_tls end end |
#load_from_yml(reload = false) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/protobuf/nats/config.rb', line 28 def load_from_yml(reload = false) CONFIG_MUTEX.synchronize do @load_from_yml = nil if reload @load_from_yml ||= begin env = ENV["RAILS_ENV"] || ENV["RACK_ENV"] || ENV["APP_ENV"] || "development" yaml_config = {} config_path = ENV["PROTOBUF_NATS_CONFIG_PATH"] || ::File.join("config", "protobuf_nats.yml") absolute_config_path = ::File.(config_path) if ::File.exists?(absolute_config_path) yaml_config = ::YAML.load_file(absolute_config_path)[env] end DEFAULTS.each_pair do |key, value| setting = yaml_config[key.to_s] __send__("#{key}=", setting) if setting end # Reload the connection options hash (true) true end end end |
#make_subscription_key_replacements(subscription_key) ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/protobuf/nats/config.rb', line 80 def make_subscription_key_replacements(subscription_key) subscription_key_replacements.each do |replacement| match = replacement.keys.first replacement = replacement[match] if subscription_key.include?(match) return subscription_key.gsub(match, replacement) end end subscription_key end |
#new_tls_context ⇒ Object
72 73 74 75 76 77 78 |
# File 'lib/protobuf/nats/config.rb', line 72 def new_tls_context tls_context = ::OpenSSL::SSL::SSLContext.new tls_context.ssl_version = :TLSv1_2 tls_context.cert = ::OpenSSL::X509::Certificate.new(::File.read(tls_client_cert)) if tls_client_cert tls_context.key = ::OpenSSL::PKey::RSA.new(::File.read(tls_client_key)) if tls_client_key tls_context end |