class CycloneLariat::SnsClient

Constants

SNS_SUFFIX

Public Instance Methods

publish(msg, topic: nil) click to toggle source
# File lib/cyclone_lariat/sns_client.rb, line 14
def publish(msg, topic: nil)
  topic ||= [instance, msg.kind, SNS_SUFFIX, publisher, msg.type].join('-')

  aws_client.publish(
    topic_arn: topic_arn(topic),
    message: msg.to_json
  )
end
publish_command(type, data: {}, version: self.version, uuid: SecureRandom.uuid, topic: nil) click to toggle source
# File lib/cyclone_lariat/sns_client.rb, line 27
def publish_command(type, data: {}, version: self.version, uuid: SecureRandom.uuid, topic: nil)
  publish command(type, data: data, version: version, uuid: uuid), topic: topic
end
publish_event(type, data: {}, version: self.version, uuid: SecureRandom.uuid, topic: nil) click to toggle source
# File lib/cyclone_lariat/sns_client.rb, line 23
def publish_event(type, data: {}, version: self.version, uuid: SecureRandom.uuid, topic: nil)
  publish event(type, data: data, version: version, uuid: uuid), topic: topic
end

Private Instance Methods

topic_arn(topic_name) click to toggle source
# File lib/cyclone_lariat/sns_client.rb, line 33
def topic_arn(topic_name)
  list  = aws_client.list_topics.topics
  topic = list.find { |t| t.topic_arn.match?(topic_name) }
  raise Errors::TopicNotFound.new(expected_topic: topic_name, existed_topics: list.map(&:topic_arn)) if topic.nil?

  topic.topic_arn
end