You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							37 lines
						
					
					
						
							997 B
						
					
					
				
			
		
		
	
	
							37 lines
						
					
					
						
							997 B
						
					
					
				module Configuration | 
						|
  class EnvConfigurationService < ConfigurationService | 
						|
  private | 
						|
 | 
						|
    def config_present? | 
						|
      !ENV["S3_CONFIG"].nil? || !ENV["REDIS_CONFIG"].nil? | 
						|
    end | 
						|
 | 
						|
    def read_config | 
						|
      unless config_present? | 
						|
        @logger.warn("Could not find S3_CONFIG or REDIS_CONFIG in the environment variables!") | 
						|
        return {} | 
						|
      end | 
						|
 | 
						|
      config = {} | 
						|
      assign_config(config, :"aws-s3-bucket", "S3_CONFIG") | 
						|
      assign_config(config, :redis, "REDIS_CONFIG") | 
						|
      config | 
						|
    end | 
						|
 | 
						|
    def assign_config(config, symbol, env_variable) | 
						|
      config_hash = parse_json_config(env_variable) | 
						|
      config[symbol] = config_hash unless config_hash.empty? | 
						|
    end | 
						|
 | 
						|
    def parse_json_config(env_variable_name) | 
						|
      if ENV[env_variable_name].present? | 
						|
        begin | 
						|
          return JSON.parse(ENV[env_variable_name], { symbolize_names: true }) | 
						|
        rescue StandardError | 
						|
          @logger.warn("Could not parse #{env_variable_name}!") | 
						|
        end | 
						|
      end | 
						|
      {} | 
						|
    end | 
						|
  end | 
						|
end
 | 
						|
 |