eventq_aws 1.10.1 → 1.11.0

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: 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