class Simnos::DSL::Subscription

Attributes

protocol[R]
topic[R]

Public Class Methods

new(context, topic: , protocol: , endpoint: ) click to toggle source
# File lib/simnos/dsl/subscription.rb, line 25
def initialize(context, topic: , protocol: , endpoint: )
  @context = context
  @options = @context.options
  @topic = topic
  @protocol = protocol
  @endpoint = endpoint
end

Public Instance Methods

aws_topic(aws_topic) click to toggle source
# File lib/simnos/dsl/subscription.rb, line 20
def aws_topic(aws_topic)
  @aws_topic = aws_topic
  self
end
create() click to toggle source
# File lib/simnos/dsl/subscription.rb, line 9
def create
  Simnos.logger.info("Create Topic(#{@aws_topic[:topic].topic_arn.split(':').last}) Subscription. protocol: #{protocol.inspect}, endpoint: #{masked_endpoint.inspect}#{@options[:dry_run] ? ' [dry-run]' : ''}".colorize(:green))
  return if @options[:dry_run]

  client.subscribe(
    topic_arn: @aws_topic[:topic].topic_arn,
    protocol: protocol,
    endpoint: endpoint,
  )
end
endpoint() click to toggle source
# File lib/simnos/dsl/subscription.rb, line 47
def endpoint
  secret_expander = @options[:secret_expander]
  if secret_expander
    secret_expander.expand(@endpoint)
  else
    @endpoint
  end
end
masked_endpoint() click to toggle source

We have to mask endpoint because SNS returns masked endpoint from API

# File lib/simnos/dsl/subscription.rb, line 36
def masked_endpoint
  if URI.extract(@endpoint, ['http', 'https']).empty?
    return endpoint
  end
  uri = URI.parse(endpoint)
  if md = uri.userinfo&.match(/(.*):(.*)/)
    uri.userinfo = "#{md[1]}:****"
  end
  uri.to_s
end

Private Instance Methods

client() click to toggle source
# File lib/simnos/dsl/subscription.rb, line 58
def client
  @client ||= Simnos::ClientWrapper.new(@context)
end