eventq_aws 1.10.1 → 1.11.0

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: 3ea99c45fa1e402da01b3d1aea2d9883a01d47ed
4
- data.tar.gz: 73a9b10f213a1abfc0210985007dd445ccc3525f
3
+ metadata.gz: f86e0b35df950bc3ab6b05753d8b9f449b20f630
4
+ data.tar.gz: e903aa7f02342867df1acbd2c7bfa294256073c5
5
5
  SHA512:
6
- metadata.gz: fa63c098936f478c44dc352392089448c69a88a328d4d9802020a2bf8205d3f344b787d983cfb629ac23c42a66af37fb1b8af00ff7dcef3d02406830be283d20
7
- data.tar.gz: f14aea46f054caaed042aa3e47da5a9e820b6376a7f22d136f37d115b58d239780bcb81b049a0f2a6fa4b4c8acd06e8033446433bb1a26f966660e5c1360002d
6
+ metadata.gz: 5becb16f4540aca989f9e23e8814cafdd8f7b5285c8f3b695faa322e32d6381ab0900a9d1148aa36a77f5d0ebdb9fb3ad48cf2a46fa3f8d85c4c1a07ab151cce
7
+ data.tar.gz: ca7d4bd6bc9c84b8009a0ef0d58f68e86562eb52f56d683b8717b2c32df3df59bc1e8f927313f400594ff2f9ff5d8fc133dd8ff4a6bbff100104a0c7bd5ace6b
@@ -1,5 +1,7 @@
1
1
  module EventQ
2
2
  module Amazon
3
+ # Implements a general interface to raise an event
4
+ # EventQ::RabbitMq::EventQClient is the sister-class which does the same for RabbitMq
3
5
  class EventQClient
4
6
 
5
7
  def initialize(options)
@@ -13,12 +15,54 @@ module EventQ
13
15
  @serialization_manager = EventQ::SerializationProviders::Manager.new
14
16
  @signature_manager = EventQ::SignatureProviders::Manager.new
15
17
 
18
+ #this array is used to record known event types
19
+ @known_event_types = []
20
+
21
+ end
22
+
23
+ def registered?(event_type)
24
+ @known_event_types.include?(event_type)
25
+ end
26
+
27
+ def register_event(event_type)
28
+ if registered?(event_type)
29
+ return true
30
+ end
31
+
32
+ @client.create_topic_arn(event_type)
33
+ @known_event_types << event_type
34
+ true
16
35
  end
17
36
 
18
37
  def raise_event(event_type, event)
38
+ register_event(event_type)
39
+
40
+ with_prepared_message(event_type, event) do |message|
41
+ @client.sns.publish(
42
+ topic_arn: topic_arn(event_type),
43
+ message: message,
44
+ subject: event_type
45
+ )
46
+ end
47
+ end
48
+
49
+ def raise_event_in_queue(event_type, event, queue, delay)
50
+ with_prepared_message(event_type, event) do |message|
51
+ @client.sqs.send_message(
52
+ queue_url: @client.get_queue_url(queue),
53
+ message_body: message,
54
+ delay_seconds: delay
55
+ )
56
+ end
57
+ end
19
58
 
20
- topic_arn = @client.get_topic_arn(event_type)
59
+ def new_message
60
+ EventQ::QueueMessage.new
61
+ end
21
62
 
63
+ private
64
+
65
+ def with_prepared_message(event_type, event)
22
66
  qm = new_message
23
67
  qm.content = event
24
68
  qm.type = event_type
@@ -28,26 +72,24 @@ module EventQ
28
72
  qm.signature = provider.write(message: qm, secret: EventQ::Configuration.signature_secret)
29
73
  end
30
74
 
31
- serialization_provider = @serialization_manager.get_provider(EventQ::Configuration.serialization_provider)
32
-
33
- message = serialization_provider.serialize(qm)
75
+ message = serialized_message(qm)
34
76
 
35
- response = @client.sns.publish({
36
- topic_arn: topic_arn,
37
- message: message,
38
- subject: event_type
39
- })
77
+ response = yield(message)
40
78
 
41
79
  EventQ.log(:debug, "[#{self.class}] - Raised event. Message: #{message} | Type: #{event_type}.")
42
80
 
43
- return response.message_id
44
-
81
+ response.message_id
45
82
  end
46
83
 
47
- def new_message
48
- EventQ::QueueMessage.new
84
+ def serialized_message(queue_message)
85
+ serialization_provider = @serialization_manager.get_provider(EventQ::Configuration.serialization_provider)
86
+
87
+ serialization_provider.serialize(queue_message)
49
88
  end
50
89
 
90
+ def topic_arn(event_type)
91
+ @client.get_topic_arn(event_type)
92
+ end
51
93
  end
52
94
  end
53
95
  end
@@ -2,11 +2,7 @@ module EventQ
2
2
  module Amazon
3
3
  class QueueClient
4
4
 
5
- attr_reader :sns
6
- attr_reader :sqs
7
-
8
5
  def initialize(options = {})
9
-
10
6
  if options.has_key?(:aws_key)
11
7
  Aws.config[:credentials] = Aws::Credentials.new(options[:aws_key], options[:aws_secret])
12
8
  end
@@ -23,10 +19,16 @@ module EventQ
23
19
  else
24
20
  @aw_region = Aws.config[:region]
25
21
  end
22
+ end
26
23
 
27
- @sns = Aws::SNS::Client.new
28
- @sqs = Aws::SQS::Client.new
24
+ # Returns the AWS SQS Client
25
+ def sqs
26
+ @sqs ||= Aws::SQS::Client.new
27
+ end
29
28
 
29
+ # Returns the AWS SNS Client
30
+ def sns
31
+ @sns ||= Aws::SNS::Client.new
30
32
  end
31
33
 
32
34
  def get_topic_arn(event_type)
@@ -41,16 +43,19 @@ module EventQ
41
43
 
42
44
  def create_topic_arn(event_type)
43
45
  _event_type = EventQ.create_event_type(event_type)
44
- response = @sns.create_topic({ name: aws_safe_name(_event_type) })
46
+ response = sns.create_topic(name: aws_safe_name(_event_type))
45
47
  return response.topic_arn
46
48
  end
47
49
 
50
+ # Returns the URL of the queue. The queue will be created when it does
51
+ #
52
+ # @param queue [EventQ::Queue]
48
53
  def get_queue_url(queue)
49
54
  _queue_name = EventQ.create_queue_name(queue.name)
50
- response= @sqs.get_queue_url({
51
- queue_name: aws_safe_name(_queue_name),
52
- queue_owner_aws_account_id: @aws_account,
53
- })
55
+ response= sqs.get_queue_url(
56
+ queue_name: aws_safe_name(_queue_name),
57
+ queue_owner_aws_account_id: @aws_account,
58
+ )
54
59
  return response.queue_url
55
60
  end
56
61
 
@@ -1,5 +1,5 @@
1
1
  module EventQ
2
2
  module Amazon
3
- VERSION = "1.10.1"
3
+ VERSION = "1.11.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eventq_aws
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.10.1
4
+ version: 1.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - vaughanbrittonsage
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-01 00:00:00.000000000 Z
11
+ date: 2017-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler