class Cfdef::Exporter

Constants

CONCURRENCY

Public Class Methods

new(client, options = {}) click to toggle source
# File lib/cfdef/exporter.rb, line 6
def initialize(client, options = {})
  @client = client
  @options = options
end

Public Instance Methods

export() click to toggle source
# File lib/cfdef/exporter.rb, line 11
def export
  {
    distributions: export_distributions,
    # TODO:
    #streaming_distributions: export_streaming_distributions,
  }.sort_array!
end

Private Instance Methods

export_distributions() click to toggle source
# File lib/cfdef/exporter.rb, line 21
def export_distributions
  result = {}

  distribution_ids = @client.list_distributions.flat_map(&:distribution_list).flat_map(&:items).map(&:id)

  Parallel.each(distribution_ids, in_threads: CONCURRENCY) do |distribution_id|
    resp = @client.get_distribution_config(id: distribution_id)
    distribution = resp.distribution_config.to_h
    distribution.delete(:caller_reference)
    origin_ids = distribution.fetch(:origins).fetch(:items).map {|i| i[:id] }.sort
    next unless origin_ids.any?{|i| matched?(i) }
    result[distribution_id] = remove_status!(distribution)
  end

  result
end
remove_status!(distribution) click to toggle source
# File lib/cfdef/exporter.rb, line 38
def remove_status!(distribution)
  [:id, :status, :last_modified_time, :domain_name].each do |key|
    distribution.delete(key)
  end

  distribution
end