summaryrefslogtreecommitdiff
path: root/lib/gitlab/mail_room.rb
diff options
context:
space:
mode:
authorGabriel Mazetto <gabriel@gitlab.com>2016-05-30 18:13:42 -0300
committerGabriel Mazetto <gabriel@gitlab.com>2016-08-04 18:55:37 +0200
commit926cee002d701548b5344e0b93e95beb3802fd54 (patch)
tree41530bd8f003cca902724a48f8a3b10eb2a91303 /lib/gitlab/mail_room.rb
parent96abb19206c6910c8c25f1db77c663baff023d35 (diff)
downloadgitlab-ce-926cee002d701548b5344e0b93e95beb3802fd54.tar.gz
Deduplicated resque.yml loading from several places
We will trust redis configuration params loading to Gitlab::RedisConfig.
Diffstat (limited to 'lib/gitlab/mail_room.rb')
-rw-r--r--lib/gitlab/mail_room.rb44
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/gitlab/mail_room.rb b/lib/gitlab/mail_room.rb
new file mode 100644
index 00000000000..745cc79a10e
--- /dev/null
+++ b/lib/gitlab/mail_room.rb
@@ -0,0 +1,44 @@
+require 'yaml'
+require 'json'
+require_relative 'lib/gitlab/redis' unless defined?(Gitlab::Redis)
+
+module Gitlab
+ module MailRoom
+
+ class << self
+
+ def enabled?
+ config[:enabled] && config[:address]
+ end
+
+ def config
+ @config ||= fetch_config
+ end
+
+ private
+
+ def fetch_config
+ return nil unless File.exists?(config_file)
+
+ rails_env = ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'
+ all_config = YAML.load_file(config_file)[rails_env].deep_symbolize_keys
+
+ config = all_config[:incoming_email] || {}
+ config[:enabled] = false if config[:enabled].nil?
+ config[:port] = 143 if config[:port].nil?
+ config[:ssl] = false if config[:ssl].nil?
+ config[:start_tls] = false if config[:start_tls].nil?
+ config[:mailbox] = 'inbox' if config[:mailbox].nil?
+
+ if config[:enabled] && config[:address]
+ config[:redis_url] = Gitlab::Redis.new(rails_env).url
+ end
+ end
+
+ def config_file
+ file = ENV['MAIL_ROOM_GITLAB_CONFIG_FILE'] || 'config/gitlab.yml'
+ File.expand_path("../../../#{file}", __FILE__)
+ end
+ end
+ end
+end