Sha256: ee6715ce336bef862c6c4673c62e4ba073a25530bffe4170ce11d4f424db99ba
Contents?: true
Size: 1.29 KB
Versions: 2
Compression:
Stored size: 1.29 KB
Contents
# frozen_string_literal: true require 'aws-sdk-sns' require_relative 'abstract/client' require_relative 'list_topics_store' module CycloneLariat class SnsClient < Abstract::Client include LunaPark::Extensions::Injector dependency(:aws_client_class) { Aws::SNS::Client } SNS_SUFFIX = :fanout 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 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 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 private def topic_arn(topic_name) topics_store.add_topics(aws_client) topic_arn = topics_store.topic_arn(topic_name) if topic_arn.nil? raise Errors::TopicNotFound.new( expected_topic: topic_name, existed_topics: topics_store.list ) end topic_arn end def topics_store ListTopicsStore.instance end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
cyclone_lariat-0.3.9 | lib/cyclone_lariat/sns_client.rb |
cyclone_lariat-0.3.8 | lib/cyclone_lariat/sns_client.rb |