cyclone_lariat 0.3.7 → 0.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 982f0e0a32ade340ac840ee2d55f77c44e362efa90be1269a68a0a95b4077aca
4
- data.tar.gz: a9111db53d68391b0cc06f84edae37b8b3b4713a9e3817bd85dfb502666ea128
3
+ metadata.gz: 9cc046e8076d845378a3e32c67b9afe728f59e98d3728246b7835480464cb6f0
4
+ data.tar.gz: 7e521071b62ec40f378cee86d06b42d5a7e1857ca4ad72ddf9a92d97d7e2a2fa
5
5
  SHA512:
6
- metadata.gz: 8db237a3ad94e569bb3e64faf57a6d0e18bc2333e478e46281d33aae51126ecea543d52ed316547b2ab0c0223337e4b9c44cf47bfe8661cdba7ece8676bb765d
7
- data.tar.gz: 5ea0b7ac666233ffead54de6df93a9757426bfba9cec467898f5ec50f4077eb360968369a9929ef9f87a4b1e29ba5a9cbfbae34c9f90f96445c6016217f36525
6
+ metadata.gz: 93830e825f2035d114ebb96ab8692d27670a644429675ddd8f21b582109adb4f7c8a0285bdd0f3c4b55d63af2da1b8f25155de1681250a2aef1f6d053366c012
7
+ data.tar.gz: ab100001f182c78762f0278ced7e6b404c25ef02380540946137e1022bda883359300029dce9e44457bc4fce0dd649a0d72ff6f6b4e2f0ffa66fb09c8d1ac834
data/CHANGELOG.md CHANGED
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.3.8] - 2022-09-05
8
+ Changed
9
+ - Added pagination to sns topics list for receiving all topics
10
+ - Added list topics store for reduce unnecessary requests to aws
11
+
7
12
  ## [0.3.7] - 2022-02-10
8
13
  Changed
9
14
  - Add exception when received broken JSON
@@ -40,8 +45,8 @@ Added
40
45
 
41
46
  ## [0.2.2] - 2021-06-08
42
47
  Changed
43
- - Fix save to database
44
- - Rename error to client error
48
+ - Fix save to database
49
+ - Rename error to client error
45
50
 
46
51
  ## [0.2.1] - 2021-06-02
47
52
  - Fix can load from database if error_details is nil
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cyclone_lariat (0.3.6)
4
+ cyclone_lariat (0.3.8)
5
5
  aws-sdk-sns
6
6
  aws-sdk-sqs
7
7
  luna_park (~> 0.11)
@@ -13,19 +13,19 @@ GEM
13
13
  public_suffix (>= 2.0.2, < 5.0)
14
14
  ast (2.4.2)
15
15
  aws-eventstream (1.2.0)
16
- aws-partitions (1.553.0)
17
- aws-sdk-core (3.126.0)
16
+ aws-partitions (1.626.0)
17
+ aws-sdk-core (3.140.0)
18
18
  aws-eventstream (~> 1, >= 1.0.2)
19
19
  aws-partitions (~> 1, >= 1.525.0)
20
20
  aws-sigv4 (~> 1.1)
21
- jmespath (~> 1.0)
22
- aws-sdk-sns (1.51.0)
23
- aws-sdk-core (~> 3, >= 3.126.0)
21
+ jmespath (~> 1, >= 1.6.1)
22
+ aws-sdk-sns (1.54.0)
23
+ aws-sdk-core (~> 3, >= 3.127.0)
24
24
  aws-sigv4 (~> 1.1)
25
- aws-sdk-sqs (1.50.0)
26
- aws-sdk-core (~> 3, >= 3.126.0)
25
+ aws-sdk-sqs (1.51.1)
26
+ aws-sdk-core (~> 3, >= 3.127.0)
27
27
  aws-sigv4 (~> 1.1)
28
- aws-sigv4 (1.4.0)
28
+ aws-sigv4 (1.5.1)
29
29
  aws-eventstream (~> 1, >= 1.0.2)
30
30
  byebug (11.1.3)
31
31
  coderay (1.1.3)
@@ -38,7 +38,7 @@ GEM
38
38
  diff-lcs (1.5.0)
39
39
  docile (1.3.5)
40
40
  hashdiff (1.0.1)
41
- jmespath (1.5.0)
41
+ jmespath (1.6.1)
42
42
  luna_park (0.11.1)
43
43
  method_source (1.0.0)
44
44
  parallel (1.20.1)
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'singleton'
4
+
5
+ module CycloneLariat
6
+ class ListTopicsStore
7
+ include Singleton
8
+
9
+ def topic_arn(topic_name)
10
+ @topics[topic_name.to_sym]
11
+ end
12
+
13
+ def list
14
+ @topics.keys
15
+ end
16
+
17
+ def add_topics(aws_client)
18
+ @topics ||= {}
19
+ @aws_client = aws_client
20
+ fetch
21
+ end
22
+
23
+ def clear_store!
24
+ @topics = {}
25
+ end
26
+
27
+ private
28
+
29
+ def fetch
30
+ return unless @topics.empty?
31
+
32
+ @next_token = ''
33
+ topics_from_aws until @next_token.nil?
34
+ end
35
+
36
+ def topics_from_aws
37
+ result = @aws_client.list_topics(next_token: @next_token)
38
+ @next_token = result.next_token
39
+ result.topics.each do |topic|
40
+ topic_name = topic.topic_arn.split(':').last
41
+ @topics[topic_name.to_sym] = topic.topic_arn
42
+ end
43
+ end
44
+ end
45
+ end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'aws-sdk-sns'
4
4
  require_relative 'abstract/client'
5
+ require_relative 'list_topics_store'
5
6
 
6
7
  module CycloneLariat
7
8
  class SnsClient < Abstract::Client
@@ -31,11 +32,21 @@ module CycloneLariat
31
32
  private
32
33
 
33
34
  def topic_arn(topic_name)
34
- list = aws_client.list_topics.topics
35
- topic = list.find { |t| t.topic_arn.match?(topic_name) }
36
- raise Errors::TopicNotFound.new(expected_topic: topic_name, existed_topics: list.map(&:topic_arn)) if topic.nil?
35
+ topics_store.add_topics(aws_client)
36
+ topic_arn = topics_store.topic_arn(topic_name)
37
37
 
38
- topic.topic_arn
38
+ if topic_arn.nil?
39
+ raise Errors::TopicNotFound.new(
40
+ expected_topic: topic_name,
41
+ existed_topics: topics_store.list
42
+ )
43
+ end
44
+
45
+ topic_arn
46
+ end
47
+
48
+ def topics_store
49
+ ListTopicsStore.instance
39
50
  end
40
51
  end
41
52
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CycloneLariat
4
- VERSION = '0.3.7'
4
+ VERSION = '0.3.8'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cyclone_lariat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ version: 0.3.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Kudrin
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-02-10 00:00:00.000000000 Z
12
+ date: 2022-09-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: aws-sdk-sns
@@ -271,6 +271,7 @@ files:
271
271
  - lib/cyclone_lariat/command.rb
272
272
  - lib/cyclone_lariat/errors.rb
273
273
  - lib/cyclone_lariat/event.rb
274
+ - lib/cyclone_lariat/list_topics_store.rb
274
275
  - lib/cyclone_lariat/messages_mapper.rb
275
276
  - lib/cyclone_lariat/messages_repo.rb
276
277
  - lib/cyclone_lariat/middleware.rb