cyclone_lariat 0.3.9 → 0.3.10
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 +4 -4
- data/CHANGELOG.md +10 -0
- data/Gemfile.lock +5 -5
- data/README.md +7 -6
- data/lib/cyclone_lariat/abstract/client.rb +9 -4
- data/lib/cyclone_lariat/configure.rb +2 -1
- data/lib/cyclone_lariat/errors.rb +0 -4
- data/lib/cyclone_lariat/sns_client.rb +7 -21
- data/lib/cyclone_lariat/sqs_client.rb +0 -2
- data/lib/cyclone_lariat/version.rb +1 -1
- metadata +2 -3
- data/lib/cyclone_lariat/list_topics_store.rb +0 -45
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db8b83a45f403749ab3ab2503f22e85af53cce8fc3267a63eb31df0246d30683
|
4
|
+
data.tar.gz: 31ed6ee400d6778d90adf90ef997cc577df5564b78238cdc36b8067ff9fcaff9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f73b11ffa6189231a1ebd71dcb7db455fbc092aaa00e740b4b1092006dd4db38550ddbb94ccc0266dc1bf4f467d481110a92061344fb1a6fa22e92ef48995b4b
|
7
|
+
data.tar.gz: d06087c237bbc3946c7e91772a987edf47b787ccd0f8e1c6e0f341f32fa6c7965b1546dcc7e188967baafaac19dd140ddca0d1cdbafb82ce68ab736d965271ef
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,16 @@ 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.10] - 2022-10-05
|
8
|
+
Added
|
9
|
+
- Added aws_client_od options
|
10
|
+
Changed:
|
11
|
+
- Renamed all AWS options with prefix _aws
|
12
|
+
|
13
|
+
## [0.3.9] - 2022-10-05 Depricated
|
14
|
+
Added
|
15
|
+
- Added configuration options see README.md
|
16
|
+
|
7
17
|
## [0.3.8] - 2022-09-05
|
8
18
|
Added
|
9
19
|
- Added configuration options see README.md
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cyclone_lariat (0.3.
|
4
|
+
cyclone_lariat (0.3.10)
|
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.
|
17
|
-
aws-sdk-core (3.
|
16
|
+
aws-partitions (1.641.0)
|
17
|
+
aws-sdk-core (3.158.0)
|
18
18
|
aws-eventstream (~> 1, >= 1.0.2)
|
19
19
|
aws-partitions (~> 1, >= 1.525.0)
|
20
20
|
aws-sigv4 (~> 1.1)
|
21
21
|
jmespath (~> 1, >= 1.6.1)
|
22
|
-
aws-sdk-sns (1.
|
22
|
+
aws-sdk-sns (1.55.0)
|
23
23
|
aws-sdk-core (~> 3, >= 3.127.0)
|
24
24
|
aws-sigv4 (~> 1.1)
|
25
25
|
aws-sdk-sqs (1.51.1)
|
26
26
|
aws-sdk-core (~> 3, >= 3.127.0)
|
27
27
|
aws-sigv4 (~> 1.1)
|
28
|
-
aws-sigv4 (1.5.
|
28
|
+
aws-sigv4 (1.5.2)
|
29
29
|
aws-eventstream (~> 1, >= 1.0.2)
|
30
30
|
byebug (11.1.3)
|
31
31
|
coderay (1.1.3)
|
data/README.md
CHANGED
@@ -38,12 +38,13 @@ received at all.
|
|
38
38
|
```ruby
|
39
39
|
# 'config/initializers/cyclone_lariat.rb'
|
40
40
|
CycloneLariat.tap do |cl|
|
41
|
-
cl.default_version
|
42
|
-
cl.
|
43
|
-
cl.
|
44
|
-
cl.
|
45
|
-
cl.
|
46
|
-
cl.
|
41
|
+
cl.default_version = 1 # api version default is 1
|
42
|
+
cl.aws_key = # aws key
|
43
|
+
cl.aws_secret_key = # aws secret
|
44
|
+
cl.aws_client_id = # aws client id
|
45
|
+
cl.aws_default_region = # aws default region
|
46
|
+
cl.publisher = 'auth' # name of your publishers, usually name of your application
|
47
|
+
cl.default_instance = APP_INSTANCE # stage, production, test
|
47
48
|
end
|
48
49
|
```
|
49
50
|
|
@@ -14,13 +14,14 @@ module CycloneLariat
|
|
14
14
|
dependency(:aws_client_class) { raise ArgumentError, 'Client class should be defined' }
|
15
15
|
dependency(:aws_credentials_class) { Aws::Credentials }
|
16
16
|
|
17
|
-
def initialize(key
|
17
|
+
def initialize(key: nil, secret_key: nil, region: nil, version: nil, publisher: nil, instance: nil, client_id: nil)
|
18
18
|
@key = key
|
19
19
|
@secret_key = secret_key
|
20
20
|
@region = region
|
21
21
|
@version = version
|
22
22
|
@publisher = publisher
|
23
23
|
@instance = instance
|
24
|
+
@client_id = client_id
|
24
25
|
end
|
25
26
|
|
26
27
|
def event(type, data: {}, version: self.version, uuid: SecureRandom.uuid)
|
@@ -76,15 +77,19 @@ module CycloneLariat
|
|
76
77
|
end
|
77
78
|
|
78
79
|
def key
|
79
|
-
@key ||= CycloneLariat.
|
80
|
+
@key ||= CycloneLariat.aws_key
|
80
81
|
end
|
81
82
|
|
82
83
|
def secret_key
|
83
|
-
@secret_key ||= CycloneLariat.
|
84
|
+
@secret_key ||= CycloneLariat.aws_secret_key
|
84
85
|
end
|
85
86
|
|
86
87
|
def region
|
87
|
-
@region ||= CycloneLariat.
|
88
|
+
@region ||= CycloneLariat.aws_default_region
|
89
|
+
end
|
90
|
+
|
91
|
+
def client_id
|
92
|
+
@client_id ||= CycloneLariat.aws_client_id
|
88
93
|
end
|
89
94
|
|
90
95
|
private
|
@@ -4,7 +4,8 @@ module CycloneLariat
|
|
4
4
|
class << self
|
5
5
|
DEFAULT_VERSION = 1
|
6
6
|
|
7
|
-
attr_accessor :
|
7
|
+
attr_accessor :aws_key, :aws_secret_key, :publisher, :aws_default_region, :default_instance,
|
8
|
+
:aws_client_id
|
8
9
|
attr_writer :default_version
|
9
10
|
|
10
11
|
def default_version
|
@@ -9,10 +9,6 @@ module CycloneLariat
|
|
9
9
|
message 'Received message is empty'
|
10
10
|
end
|
11
11
|
|
12
|
-
class TopicNotFound < LunaPark::Errors::System
|
13
|
-
message { |d| "Could not found topic: `#{d[:expected_topic]}`" }
|
14
|
-
end
|
15
|
-
|
16
12
|
class ClientError < LunaPark::Errors::Business
|
17
13
|
attr_writer :message, :details
|
18
14
|
|
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
require 'aws-sdk-sns'
|
4
4
|
require_relative 'abstract/client'
|
5
|
-
require_relative 'list_topics_store'
|
6
5
|
|
7
6
|
module CycloneLariat
|
8
7
|
class SnsClient < Abstract::Client
|
@@ -13,12 +12,9 @@ module CycloneLariat
|
|
13
12
|
SNS_SUFFIX = :fanout
|
14
13
|
|
15
14
|
def publish(msg, topic: nil)
|
16
|
-
topic ||=
|
17
|
-
|
18
|
-
aws_client.publish(
|
19
|
-
topic_arn: topic_arn(topic),
|
20
|
-
message: msg.to_json
|
21
|
-
)
|
15
|
+
topic ||= get_topic(msg.kind, msg.type)
|
16
|
+
arn = get_arn(topic)
|
17
|
+
aws_client.publish(topic_arn: arn, message: msg.to_json)
|
22
18
|
end
|
23
19
|
|
24
20
|
def publish_event(type, data: {}, version: self.version, uuid: SecureRandom.uuid, topic: nil)
|
@@ -31,22 +27,12 @@ module CycloneLariat
|
|
31
27
|
|
32
28
|
private
|
33
29
|
|
34
|
-
def
|
35
|
-
|
36
|
-
topic_arn = topics_store.topic_arn(topic_name)
|
37
|
-
|
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
|
30
|
+
def get_arn(topic)
|
31
|
+
['arn', 'aws', 'sns', region, client_id, topic].join ':'
|
46
32
|
end
|
47
33
|
|
48
|
-
def
|
49
|
-
|
34
|
+
def get_topic(kind, type)
|
35
|
+
[instance, kind, SNS_SUFFIX, publisher, type].join '-'
|
50
36
|
end
|
51
37
|
end
|
52
38
|
end
|
@@ -34,8 +34,6 @@ module CycloneLariat
|
|
34
34
|
|
35
35
|
def url(topic_name)
|
36
36
|
aws_client.get_queue_url(queue_name: topic_name).queue_url
|
37
|
-
rescue Aws::SQS::Errors::NonExistentQueue => _e
|
38
|
-
raise Errors::TopicNotFound.new(expected_topic: topic_name, existed_topics: aws_client.list_queues)
|
39
37
|
end
|
40
38
|
end
|
41
39
|
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.
|
4
|
+
version: 0.3.10
|
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-10-
|
12
|
+
date: 2022-10-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: aws-sdk-sns
|
@@ -272,7 +272,6 @@ files:
|
|
272
272
|
- lib/cyclone_lariat/configure.rb
|
273
273
|
- lib/cyclone_lariat/errors.rb
|
274
274
|
- lib/cyclone_lariat/event.rb
|
275
|
-
- lib/cyclone_lariat/list_topics_store.rb
|
276
275
|
- lib/cyclone_lariat/messages_mapper.rb
|
277
276
|
- lib/cyclone_lariat/messages_repo.rb
|
278
277
|
- lib/cyclone_lariat/middleware.rb
|
@@ -1,45 +0,0 @@
|
|
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
|