Class: Philotic::Config

Inherits:
Object
  • Object
show all
Includes:
Defaults
Defined in:
lib/philotic/config.rb,
lib/philotic/config/defaults.rb

Defined Under Namespace

Modules: Defaults

Constant Summary collapse

ENV_PREFIX =
'PHILOTIC'

Constants included from Defaults

Defaults::APP_ID, Defaults::AUTOMATICALLY_RECOVER, Defaults::CONNECTION_ATTEMPTS, Defaults::CONTENT_ENCODING, Defaults::CONTENT_TYPE, Defaults::CONTINUATION_TIMEOUT, Defaults::CORRELATION_ID, Defaults::DELETE_EXISTING_QUEUES, Defaults::DISABLE_PUBLISH, Defaults::ENCRYPTION_KEY, Defaults::EXCHANGE_NAME, Defaults::EXPIRATION, Defaults::IMMEDIATE, Defaults::INITIALIZE_NAMED_QUEUES, Defaults::LOG_LEVEL, Defaults::MANDATORY, Defaults::MESSAGE_ID, Defaults::NETWORK_RECOVERY_INTERVAL, Defaults::PERSISTENT, Defaults::PREFETCH_COUNT, Defaults::PRIORITY, Defaults::RABBIT_HOST, Defaults::RABBIT_PASSWORD, Defaults::RABBIT_PORT, Defaults::RABBIT_SCHEME, Defaults::RABBIT_URL, Defaults::RABBIT_USER, Defaults::RABBIT_VHOST, Defaults::RAISE_ERROR_ON_PUBLISH, Defaults::REPLY_TO, Defaults::ROUTING_KEY, Defaults::SERIALIZATIONS, Defaults::TIMESTAMP, Defaults::TYPE, Defaults::USER_ID

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Defaults

#defaults, included

Constructor Details

#initialize(connection, config = {}) ⇒ Config

Returns a new instance of Config.



21
22
23
24
# File 'lib/philotic/config.rb', line 21

def initialize(connection, config={})
  load_config config
  @connection = connection
end

Instance Attribute Details

#connectionObject

Returns the value of attribute connection.



19
20
21
# File 'lib/philotic/config.rb', line 19

def connection
  @connection
end

#message_return_handlerObject



44
45
46
47
48
# File 'lib/philotic/config.rb', line 44

def message_return_handler
  @message_return_handler ||= lambda do |basic_return, , payload|
    logger.warn { "Philotic message #{JSON.parse payload} was returned! reply_code = #{basic_return.reply_code}, reply_text = #{basic_return.reply_text} headers = #{[:headers]}" }
  end
end

Instance Method Details

#connection_attemptsObject



34
35
36
# File 'lib/philotic/config.rb', line 34

def connection_attempts
  @connection_retries ||= defaults[:connection_attempts].to_i
end

#content_typeObject



93
94
95
# File 'lib/philotic/config.rb', line 93

def content_type
  Philotic::Serialization::Serializer.factory(serializations.last).content_type
end

#load_config(config) ⇒ Object



76
77
78
79
80
81
# File 'lib/philotic/config.rb', line 76

def load_config(config)
  config.each do |k, v|
    mutator = "#{k}="
    send(mutator, v) if respond_to? mutator
  end
end

#load_file(filename, env = 'development') ⇒ Object



83
84
85
86
# File 'lib/philotic/config.rb', line 83

def load_file(filename, env = 'development')
  config = YAML.load_file(filename)
  load_config(config[env])
end

#log_levelObject



30
31
32
# File 'lib/philotic/config.rb', line 30

def log_level
  @log_level ||= defaults[:log_level].to_i
end

#loggerObject



26
27
28
# File 'lib/philotic/config.rb', line 26

def logger
  connection.logger
end

#parse_rabbit_uriObject



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/philotic/config.rb', line 50

def parse_rabbit_uri
  settings            = Bunny::Session.parse_uri(@rabbit_url || defaults[:rabbit_url])
  settings[:password] = settings.delete(:pass)

  %w[scheme host port user password vhost].each do |setting|
    setting       = setting.to_sym
    current_value = send("rabbit_#{setting}")

    # only use the value from the URI if the existing value is nil or the default
    if settings[setting] && [Defaults.const_get("rabbit_#{setting}".upcase), nil].include?(current_value)
      send("rabbit_#{setting}=", settings[setting])
    end
  end

end

#prefetch_countObject



38
39
40
# File 'lib/philotic/config.rb', line 38

def prefetch_count
  @prefetch_count ||= defaults[:prefetch_count].to_i
end

#rabbit_urlObject



66
67
68
69
# File 'lib/philotic/config.rb', line 66

def rabbit_url
  parse_rabbit_uri
  "#{rabbit_scheme}://#{rabbit_user}:#{rabbit_password}@#{rabbit_host}:#{rabbit_port}/#{CGI.escape rabbit_vhost}"
end

#sanitized_rabbit_urlObject



71
72
73
74
# File 'lib/philotic/config.rb', line 71

def sanitized_rabbit_url
  parse_rabbit_uri
  rabbit_url.gsub("#{rabbit_user}:#{rabbit_password}", '[USER_REDACTED]:[PASSWORD_REDACTED]')
end

#serializationsObject



88
89
90
91
# File 'lib/philotic/config.rb', line 88

def serializations
  self.serializations = MultiJson.load(defaults[:serializations]) unless @serializations
  @serializations
end