rising_dragon 0.3.0 → 0.3.1

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
  SHA1:
3
- metadata.gz: 554b0e15e8820975f1b6d7c908d70d3645ba6dbb
4
- data.tar.gz: 759d60da36d48fee4ce0c2b4b4b625a262a47e84
3
+ metadata.gz: 29142cffa2333863f5da6099bd0c946fdc867cfe
4
+ data.tar.gz: 85496d2d16f6a7c01b8942cb8b881364e4ed2939
5
5
  SHA512:
6
- metadata.gz: c541ba929ee4cf2a04188998553014a3b3363c38339a3f99cb7cde57322bfbccbaa66ffedc84279505f1143ac0965ad4f63b1027febcdd9c8a1d48c9a3227d1c
7
- data.tar.gz: 3a7c38fd0a25dc48c761d826bd97001024a35b5cb07aa3c91a00459dc0f52d52cd35a6cef1089f7cca39942a38f5d166b6ee330a0b52595d7e5f3115e9f2db3e
6
+ metadata.gz: 0f1a102e2a820ff494bb67f3aca541e2497a4d1352c8cc36f42edd2bb3ead72fcaef3178712bc9255679ad5a9dbc3f5bd946c02867a0c29cc3a51ba3f15a5fee
7
+ data.tar.gz: 9a7a2f1899396bde0a1d9eaf7731290eee6a5d2d3c14bded98feec2f3cfacb70f25b07376ba10acb005a3f2a2098528b9474720beca2ace6c7054fb864d0bda9
data/README.md CHANGED
@@ -13,7 +13,7 @@ Use AWS SQS/SNS as event worker for Microservices.
13
13
  Add this line to your application's Gemfile:
14
14
 
15
15
  ```ruby
16
- gem 'rising_dragon', '>= 0.3.0'
16
+ gem 'rising_dragon', '>= 0.3.1'
17
17
  ```
18
18
 
19
19
  And then execute:
@@ -23,17 +23,33 @@ And then execute:
23
23
  Or install it yourself as:
24
24
 
25
25
  $ gem install rising_dragon
26
+
27
+ ## Publisher Usage
28
+ ```ruby
29
+ require 'aws-sdk'
30
+ require 'rising_dragon'
31
+
32
+ sns_client = Aws::SNS::Client.new(
33
+ access_key_id: Settings.aws.access_key_id,
34
+ secret_access_key: Settings.aws.secret_access_key,
35
+ region: Settings.aws.region,
36
+ )
26
37
 
27
- ## Usage
38
+ publisher = ::RisingDragon::SNS::Publisher.new(sns_client)
39
+
40
+ data = { id: 1, name: "first last" }
41
+ publisher.send_event!("SNSTopicName", "EventType", data)
42
+ ```
43
+
44
+ ## Worker Usage
28
45
 
29
46
  execute `bundle exec shoryuken -r steps_worker.rb`
30
47
 
31
48
  ### setting file
32
49
  ```ruby
33
50
  # steps_worker.rb
34
-
51
+ require 'aws-sdk'
35
52
  require 'rising_dragon'
36
- require 'securerandom'
37
53
 
38
54
  RisingDragon.sqs_client = Aws::SQS::Client.new(
39
55
  secret_access_key: Settings.aws.secret_access_key,
@@ -7,5 +7,14 @@ module RisingDragon
7
7
  @timestamp = timestamp
8
8
  @data = data
9
9
  end
10
+
11
+ def to_json(*option)
12
+ {
13
+ id: @id,
14
+ type: @type,
15
+ timestamp: @timestamp,
16
+ data: @data,
17
+ }.to_json(*option)
18
+ end
10
19
  end
11
20
  end
@@ -0,0 +1,43 @@
1
+ module RisingDragon
2
+ module SNS
3
+ class Publisher
4
+ attr_accessor :use_cache
5
+ def initialize(sns_client)
6
+ @sns_client = sns_client
7
+ @topic_cache = {}
8
+ @use_cache = true # default true :)
9
+ end
10
+
11
+ def send_event!(topic_name, event_type, data)
12
+ event = create_event(event_type, data)
13
+
14
+ topic = get_topic(topic_name)
15
+ @sns_client.publish(topic_arn: topic.topic_arn, message: event.to_json)
16
+ end
17
+
18
+ private
19
+
20
+ def create_event(type, data)
21
+ ::RisingDragon::Event.new(id: uuid, timestamp: unixtime, type: type, data: data)
22
+ end
23
+
24
+ def uuid
25
+ SecureRandom.uuid
26
+ end
27
+
28
+ def unixtime
29
+ (Time.now.to_f * 1000).to_i
30
+ end
31
+
32
+ def get_topic(topic_name)
33
+ return create_topic(topic_name) unless @use_cache
34
+
35
+ @topic_cache[topic_name] ||= create_topic(topic_name)
36
+ end
37
+
38
+ def create_topic(topic_name)
39
+ @sns_client.create_topic(name: topic_name)
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,5 +1,3 @@
1
- require "json"
2
-
3
1
  module RisingDragon
4
2
  module SQS
5
3
  class Emitter
@@ -1,3 +1,3 @@
1
1
  module RisingDragon
2
- VERSION = "0.3.0".freeze
2
+ VERSION = "0.3.1".freeze
3
3
  end
data/lib/rising_dragon.rb CHANGED
@@ -1,8 +1,12 @@
1
+ require "json"
2
+ require "securerandom"
3
+
1
4
  require "shoryuken"
2
5
 
3
6
  require "rising_dragon/version"
4
7
  require "rising_dragon/event"
5
8
  require "rising_dragon/error"
9
+ require "rising_dragon/sns/publisher"
6
10
  require "rising_dragon/sqs/emitter"
7
11
  require "rising_dragon/sqs/handler"
8
12
  require "rising_dragon/sqs/worker"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rising_dragon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ota42y
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-26 00:00:00.000000000 Z
11
+ date: 2017-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: shoryuken
@@ -144,6 +144,7 @@ files:
144
144
  - lib/rising_dragon.rb
145
145
  - lib/rising_dragon/error.rb
146
146
  - lib/rising_dragon/event.rb
147
+ - lib/rising_dragon/sns/publisher.rb
147
148
  - lib/rising_dragon/sqs/emitter.rb
148
149
  - lib/rising_dragon/sqs/handler.rb
149
150
  - lib/rising_dragon/sqs/worker.rb