Top Level Namespace

Defined Under Namespace

Classes: ConfigError, ErrorReporter, Publisher, ServicesManager, Subscriber

Instance Method Summary collapse

Instance Method Details

#at_least_one_binding_key_exists?(config) ⇒ Boolean

Returns:

  • (Boolean)


79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/bunny-pub-sub/helper/config_checks.rb', line 79

def at_least_one_binding_key_exists?(config)
  if (config[:BINDING_KEYS].nil? &&
     config[:DEFAULT_BINDING_KEY].nil?) ||
     (config[:BINDING_KEYS]&.strip&.empty? &&
     config[:DEFAULT_BINDING_KEY]&.strip&.empty?)
    puts 'Either BINDING_KEYS or '\
         'DEFAULT_BINDING_KEY must be defined and must not be empty'
    false
  else
    true
  end
end

#binding_keys_to_array(config) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/bunny-pub-sub/helper/config_checks.rb', line 62

def binding_keys_to_array(config)
  language_environments = []
  unless config[:DEFAULT_BINDING_KEY]&.strip&.empty?
    language_environments.push(config[:DEFAULT_BINDING_KEY])
  end

  if !config[:BINDING_KEYS].nil? && !config[:BINDING_KEYS].empty?
    # Pushing array to another array:
    # https://stackoverflow.com/questions/1801516/how-do-you-add-an-array-to-another-array-in-ruby-and-not-end-up-with-a-multi-dim
    language_environments = [language_environments | config[:BINDING_KEYS].split(',')].flatten
  end

  return nil if language_environments.empty?

  valid_binding_keys?(language_environments) ? language_environments : nil
end

#register_subscriber(subscriber_config, action, results_publisher) ⇒ Object



126
127
128
129
130
131
132
133
134
135
# File 'lib/bunny-pub-sub/subscriber.rb', line 126

def register_subscriber(subscriber_config,
                        action,
                        results_publisher)

  subscriber_instance = Subscriber.new subscriber_config, results_publisher
  subscriber_instance.start_subscriber(action)
  subscriber_instance
rescue RuntimeError => e
  puts e
end

#routing_key_exists?(config) ⇒ Boolean

Publisher only checks BEGIN ==================================================

Returns:

  • (Boolean)


97
98
99
100
101
102
103
104
105
# File 'lib/bunny-pub-sub/helper/config_checks.rb', line 97

def routing_key_exists?(config)
  if config[:ROUTING_KEY].nil? ||
     config[:ROUTING_KEY]&.strip&.empty?
    puts 'ROUTING_KEY must be defined and must not be empty'
    false
  else
    true
  end
end

#valid_binding_keys?(language_environments, type = 'topic') ⇒ Boolean

Subscriber only checks BEGIN =================================================

Returns:

  • (Boolean)


41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/bunny-pub-sub/helper/config_checks.rb', line 41

def valid_binding_keys?(language_environments, type='topic')
  # TODO: Exchanges of type `topic` PROBABLY can't simply have multiple
  # words like `direct` exchanges.
  # Rather they must be a list of words, delimited by dots.
  # VERIFY and if true, ensure that all the strings in
  # language_environments adhere to this rule.
  # language_environments must be something like "#.csharp",
  # "#.splashkit.csharp", "#.python", etc.
  case type
  when 'topic'
    language_environments.each do |language_environment|
      if !language_environment.is_a?(String) ||
         language_environment.strip.empty?
        # TODO: Add regex check here.
        return false
      end
    end
  end
  true
end

#valid_config?(config) ⇒ Boolean

Returns:

  • (Boolean)

Raises:



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/bunny-pub-sub/helper/config_checks.rb', line 5

def valid_config?(config)
  raise ConfigError, 'CONFIG must not be nil' if config.nil?

  flag = true, error_msgs = []
  if config[:RABBITMQ_HOSTNAME].nil? ||
     config[:RABBITMQ_HOSTNAME]&.strip&.empty?
    error_msgs << 'Must define config variable RABBITMQ_HOSTNAME'
    flag = false
  end
  if config[:RABBITMQ_USERNAME].nil? ||
     config[:RABBITMQ_USERNAME]&.strip&.empty?
    error_msgs << 'Must define config variable RABBITMQ_USERNAME'
    flag = false
  end
  if config[:RABBITMQ_PASSWORD].nil? ||
     config[:RABBITMQ_PASSWORD]&.strip&.empty?
    error_msgs << 'Must define config variable RABBITMQ_PASSWORD'
    flag = false
  end
  if config[:EXCHANGE_NAME].nil? ||
     config[:EXCHANGE_NAME]&.strip&.empty?
    error_msgs << 'Must define config variable EXCHANGE_NAME'
    flag = false
  end
  if config[:DURABLE_QUEUE_NAME].nil? ||
     config[:DURABLE_QUEUE_NAME]&.strip&.empty?
    error_msgs << 'Must define config variable DURABLE_QUEUE_NAME'
    flag = false
  end
  raise ConfigError, error_msgs unless flag

  flag
end