forked from square/kochiku
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsettings_accessor.rb
69 lines (56 loc) · 1.33 KB
/
settings_accessor.rb
1
2
3
4
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
require 'yaml'
require 'active_support/core_ext/hash/indifferent_access'
require 'server_settings'
class SettingsAccessor
def initialize(yaml)
@hash = YAML.load(yaml).with_indifferent_access
end
def sender_email_address
@hash[:sender_email_address]
end
def kochiku_notifications_email_address
@hash[:kochiku_notifications_email_address]
end
def domain_name
@hash[:domain_name]
end
def kochiku_protocol
@hash[:use_https] ? "https" : "http"
end
def kochiku_host
@hash[:kochiku_host]
end
def kochiku_host_with_protocol
"#{kochiku_protocol}://#{kochiku_host}"
end
def git_servers
@git_servers ||= begin
raw_servers = @hash[:git_servers]
if raw_servers
raw_servers.each_with_object({}) do |(host, settings_for_server), result|
result[host] = ServerSettings.new(settings_for_server, host)
end
else
{}
end
end
end
def git_server(url)
git_servers.values.detect do |server|
url.include?(server.host) ||
(server.aliases && server.aliases.detect { |a| url.include?(a) })
end
end
def smtp_server
@hash[:smtp_server]
end
def redis_host
@hash[:redis_host]
end
def redis_port
@hash.fetch(:redis_port, 6379)
end
def git_pair_email_prefix
@hash[:git_pair_email_prefix]
end
end