|
|
|
class PaasConfigurationService
|
|
|
|
attr_reader :s3_buckets, :redis_uris
|
|
|
|
|
|
|
|
def initialize(logger = Rails.logger)
|
|
|
|
@logger = logger
|
|
|
|
@paas_config = read_pass_config
|
|
|
|
@s3_buckets = read_s3_buckets
|
|
|
|
@redis_uris = read_redis_uris
|
|
|
|
end
|
|
|
|
|
|
|
|
def config_present?
|
|
|
|
!ENV["VCAP_SERVICES"].nil?
|
|
|
|
end
|
|
|
|
|
|
|
|
def s3_config_present?
|
|
|
|
config_present? && @paas_config.key?(:"aws-s3-bucket")
|
|
|
|
end
|
|
|
|
|
|
|
|
def redis_config_present?
|
|
|
|
config_present? && @paas_config.key?(:redis)
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def read_pass_config
|
|
|
|
unless config_present?
|
|
|
|
@logger.warn("Could not find VCAP_SERVICES in the environment!")
|
|
|
|
return {}
|
|
|
|
end
|
|
|
|
|
|
|
|
begin
|
|
|
|
JSON.parse(ENV["VCAP_SERVICES"], { symbolize_names: true })
|
|
|
|
rescue StandardError
|
|
|
|
@logger.warn("Could not parse VCAP_SERVICES!")
|
|
|
|
{}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def read_s3_buckets
|
|
|
|
return {} unless s3_config_present?
|
|
|
|
|
|
|
|
s3_buckets = {}
|
|
|
|
@paas_config[:"aws-s3-bucket"].each do |bucket_config|
|
|
|
|
if bucket_config.key?(:instance_name)
|
|
|
|
s3_buckets[bucket_config[:instance_name].to_sym] = bucket_config
|
|
|
|
end
|
|
|
|
end
|
|
|
|
s3_buckets
|
|
|
|
end
|
|
|
|
|
|
|
|
def read_redis_uris
|
|
|
|
return {} unless redis_config_present?
|
|
|
|
|
|
|
|
redis_uris = {}
|
|
|
|
@paas_config[:redis].each do |redis_config|
|
|
|
|
if redis_config.key?(:instance_name)
|
|
|
|
redis_uris[redis_config[:instance_name].to_sym] = redis_config.dig(:credentials, :uri)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
redis_uris
|
|
|
|
end
|
|
|
|
end
|