rising_dragon 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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