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