Sha256: e5b9adc6a60fded418427eecbb38dea6c106d086e647f19753669b23376feed7

Contents?: true

Size: 1.49 KB

Versions: 54

Compression:

Stored size: 1.49 KB

Contents

class Jets::Resource
  extend Memoist

  attr_reader :definition, :replacements
  def initialize(definition, replacements={})
    @definition = definition
    @replacements = replacements
  end

  def template
    standarize(definition)
  end
  memoize :template

  # CloudFormation Resources reference: https://amzn.to/2NKg6ip
  def standarize(*definition)
    Standardizer.new(definition).template
  end

  def logical_id
    id = template.keys.first
    # replace possible {namespace} in the logical id
    id = replacer.replace_value(id)
    id = Jets::Camelizer.camelize(id)

    Jets::Resource.truncate_id(id)
  end

  def self.truncate_id(id, postfix = '')
    # Api Gateway resource name has a limit of 64 characters.
    # Yet it throws not found when ID is longer than 62 characters and I don't know why.
    # To keep it safe, let's stick to the 62 characters limit.
    if id.size + postfix.size > 62
      "#{id[0..(55 - postfix.size)]}#{Digest::MD5.hexdigest(id)[0..5]}#{postfix}"
    else
      "#{id}#{postfix}"
    end
  end

  def type
    attributes['Type']
  end

  def properties
    attributes['Properties']
  end

  def attributes
    attributes = template.values.first
    attributes = replacer.replace_placeholders(attributes)
    Jets::Camelizer.transform(attributes)
  end

  def parameters
    {}
  end

  def outputs
    {}
  end

  def replacer
    Replacer.new(replacements)
  end
  memoize :replacer

  def permission
    Permission.new(replacements, self)
  end
  memoize :permission
end

Version data entries

54 entries across 54 versions & 2 rubygems

Version Path
jets-4.0.12 lib/jets/resource.rb
jets-4.0.11 lib/jets/resource.rb
jets-4.0.10 lib/jets/resource.rb
jets-4.0.9 lib/jets/resource.rb
jets-4.0.8 lib/jets/resource.rb
jets-4.0.7 lib/jets/resource.rb
jets-4.0.6 lib/jets/resource.rb
jets-4.0.5 lib/jets/resource.rb
jets-4.0.4 lib/jets/resource.rb
jets-4.0.3 lib/jets/resource.rb
jets-4.0.2 lib/jets/resource.rb
jets-4.0.1 lib/jets/resource.rb
jets-4.0.0 lib/jets/resource.rb
jets-3.2.2 lib/jets/resource.rb
jets-3.2.1 lib/jets/resource.rb
jets.benforeva-3.0.17.pre.mount.pre.fix lib/jets/resource.rb
jets-3.2.0 lib/jets/resource.rb
jets-3.1.5 lib/jets/resource.rb
jets-3.1.4 lib/jets/resource.rb
jets-3.1.3 lib/jets/resource.rb