Class: ConfigureS3Website::CloudFrontClient

Inherits:
Object
  • Object
show all
Defined in:
lib/configure-s3-website/cloudfront_client.rb

Class Method Summary collapse

Class Method Details

.apply_distribution_config(options) ⇒ Object



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
# File 'lib/configure-s3-website/cloudfront_client.rb', line 6

def self.apply_distribution_config(options)
  config_source = options[:config_source]
  puts "Detected an existing CloudFront distribution (id #{config_source.cloudfront_distribution_id}) ..."

  live_config = cloudfront(config_source).get_distribution({
    id: options[:config_source].cloudfront_distribution_id
  })

  custom_distribution_config = config_source.cloudfront_distribution_config || {}
  if custom_distribution_config.empty?
    return
  end
  live_distribution_config = live_config.distribution.distribution_config.to_hash
  custom_distribution_config_with_caller_ref = live_distribution_config.deep_merge!(
    deep_symbolize(custom_distribution_config.merge({
      caller_reference: live_config.distribution.distribution_config.caller_reference,
      comment: 'Updated by the configure-s3-website gem'
    })),
    ConfigureS3Website::deep_merge_options
  )
  cloudfront(config_source).update_distribution({
    distribution_config: custom_distribution_config_with_caller_ref,
    id: options[:config_source].cloudfront_distribution_id,
    if_match: live_config.etag
  })

  print_report_on_custom_distribution_config custom_distribution_config_with_caller_ref
end

.create_distribution_if_user_agrees(options, standard_input) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/configure-s3-website/cloudfront_client.rb', line 35

def self.create_distribution_if_user_agrees(options, standard_input)
  if options['autocreate-cloudfront-dist'] and options[:headless]
    puts 'Creating a CloudFront distribution for your S3 website ...'
    create_distribution options
  elsif options[:headless]
    # Do nothing
  else
    puts 'Do you want to deliver your website via CloudFront, Amazon’s CDN service? [y/N]'
    case standard_input.gets.chomp
    when /(y|Y)/ then create_distribution options
    end
  end
end