jets 5.0.7 → 5.0.8

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
  SHA256:
3
- metadata.gz: e04f05b1acc2261aa805569fce675ac41b87de70487156b625ddc1beedad957a
4
- data.tar.gz: 4f89a28661441ff74bf7cb98b90eef08583fe18e20ba72472240e41f942b8ff2
3
+ metadata.gz: 3c9deeac005b373929e04e747ce2465b82eccc49a99a39830025228e1da199e7
4
+ data.tar.gz: e1e5849237312cfe6725a1d4bd163b8b17f4ef904a000b5c5323de05a7afbaf4
5
5
  SHA512:
6
- metadata.gz: 189e8b589c09a258329a7f0d29ac52759a854e75ddafa312716e93359689ee87946c7cecb8cbb720e0046042e0358fd7086ef2b011ecb2929014f0c371352548
7
- data.tar.gz: 5f2adbfc890b6a0346a998463fa3d297138aebe570576d1f2d3f782456da5c4384151043f9b241a966c6fcfcf3b2fb2ffda49c129ea43a3581513422f85e42fa
6
+ metadata.gz: c351ace071bea12bca7785140d1a3cd0abcc8750a1e06d99cbe5691af1a26a573f8ff915a1d4569dd97c736df852d83d8944161c2387c42791588f568d13e17f
7
+ data.tar.gz: 1bef67bd4957279b84d2315597568a78c4fe17806d659116dd59f55018e242b432fbc23d186ca4e171f97db001ac22c5f86158049b817713b2ead712158eb419
data/CHANGELOG.md CHANGED
@@ -3,6 +3,9 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/).
5
5
 
6
+ ## [5.0.8] - 2023-12-24
7
+ - [#702](https://github.com/rubyonjets/jets/pull/702) prettier event helpers IE: s3_events vs s3_event_payloads
8
+
6
9
  ## [5.0.7] - 2023-12-24
7
10
  - [#699](https://github.com/rubyonjets/jets/pull/699) cache Stack.lookup output in class memory
8
11
  - [#700](https://github.com/rubyonjets/jets/pull/700) update s3 sns and sqs event helpers to return all events
@@ -130,7 +130,7 @@ module Jets::Builders
130
130
 
131
131
  def internal_shims
132
132
  jets_base_path if Jets.custom_domain?
133
- s3_bucket_config if Jets.s3_event?
133
+ s3_bucket_config if Jets.s3_events?
134
134
  end
135
135
 
136
136
  def jets_base_path
@@ -35,7 +35,7 @@ module Jets::Command
35
35
 
36
36
  private
37
37
  def create_s3_event_buckets
38
- buckets = Jets::Job::Base.s3_events.keys
38
+ buckets = Jets::Job::Base._s3_events.keys
39
39
  buckets.each do |bucket|
40
40
  Jets::AwsServices::S3Bucket.ensure_exists(bucket)
41
41
  end
data/lib/jets/core.rb CHANGED
@@ -158,8 +158,8 @@ module Jets::Core
158
158
  Jets.config.domain.hosted_zone_name
159
159
  end
160
160
 
161
- def s3_event?
162
- !Jets::Job::Base.s3_events.empty?
161
+ def s3_events?
162
+ !Jets::Job::Base._s3_events.empty?
163
163
  end
164
164
 
165
165
  def process(event, context, handler)
@@ -4,6 +4,8 @@ class <%= class_name %>Job < ApplicationJob
4
4
  sns_event "hello-topic"
5
5
  def <%= options[:name] %>
6
6
  puts "event #{JSON.dump(event)}"
7
+ puts "sns_events #{JSON.dump(sns_events)}"
8
+ puts "sns_events? #{JSON.dump(sns_events?)}"
7
9
  end
8
10
  end
9
11
  <% end -%>
@@ -4,6 +4,8 @@ class <%= class_name %>Job < ApplicationJob
4
4
  sqs_event "hello-queue"
5
5
  def <%= options[:name] %>
6
6
  puts "event #{JSON.dump(event)}"
7
+ puts "sqs_events #{JSON.dump(sqs_events)}"
8
+ puts "sqs_events? #{JSON.dump(sqs_events?)}"
7
9
  end
8
10
  end
9
11
  <% end -%>
data/lib/jets/job/base.rb CHANGED
@@ -10,17 +10,17 @@ module Jets::Job
10
10
  include Dsl
11
11
 
12
12
  # non-DSL methods
13
- include Helpers::KinesisEventHelper
14
- include Helpers::LogEventHelper
15
- include Helpers::S3EventHelper
16
- include Helpers::SnsEventHelper
17
- include Helpers::SqsEventHelper
13
+ include Helpers::KinesisEvent
14
+ include Helpers::LogEvent
15
+ include Helpers::S3Event
16
+ include Helpers::SnsEvent
17
+ include Helpers::SqsEvent
18
18
  prepend Jets::ExceptionReporting::Process
19
19
 
20
20
  # Tracks bucket each time an s3_event is declared
21
21
  # Map of bucket_name => stack_name (nested part)
22
- cattr_accessor :s3_events # dont want this to be inheritable intentionally
23
- self.s3_events = {}
22
+ cattr_accessor :_s3_events # dont want this to be inheritable intentionally
23
+ self._s3_events = {}
24
24
 
25
25
  class << self
26
26
  def process(event, context, meth)
@@ -11,7 +11,7 @@ module Jets::Job::Dsl
11
11
  # We will not generate them again. However, we still need to always
12
12
  # add the depends_on declaration to ensure that the shared stack parameters
13
13
  # are properly passed to the nested child stack.
14
- stack_name = s3_events[bucket_name] # already registered
14
+ stack_name = _s3_events[bucket_name] # already registered
15
15
  if stack_name
16
16
  depends_on stack_name.underscore.to_sym, class_prefix: true # always add this
17
17
  return stack_name
@@ -20,7 +20,7 @@ module Jets::Job::Dsl
20
20
  # Create shared resources - one time
21
21
  stack_name = declare_shared_s3_event_resources(bucket_name)
22
22
  depends_on stack_name.underscore.to_sym, class_prefix: true # always add this
23
- self.s3_events[bucket_name] = stack_name # tracks buckets already set up
23
+ self._s3_events[bucket_name] = stack_name # tracks buckets already set up
24
24
  end
25
25
 
26
26
  def declare_shared_s3_event_resources(bucket_name)
@@ -29,8 +29,8 @@ module Jets::Job::Dsl
29
29
  s3_stack.stack_name
30
30
  end
31
31
 
32
- def s3_events
33
- Jets::Job::Base.s3_events
32
+ def _s3_events
33
+ Jets::Job::Base._s3_events
34
34
  end
35
35
  end
36
36
  end
@@ -1,7 +1,7 @@
1
1
  require 'base64'
2
2
 
3
3
  module Jets::Job::Helpers
4
- module KinesisEventHelper
4
+ module KinesisEvent
5
5
  def kinesis_data
6
6
  records = event["Records"]
7
7
  records.map do |record|
@@ -4,7 +4,7 @@ require 'stringio'
4
4
  require 'zlib'
5
5
 
6
6
  module Jets::Job::Helpers
7
- module LogEventHelper
7
+ module LogEvent
8
8
  def log_event
9
9
  encoded = event["awslogs"]["data"]
10
10
  compressed_string = Base64.decode64(encoded)
@@ -0,0 +1,50 @@
1
+ module Jets::Job::Helpers
2
+ module S3Event
3
+ def s3_events
4
+ encoded_messages = event["Records"].map do |record|
5
+ record["Sns"]["Message"] # SNS message is JSON
6
+ end
7
+ # Decode the JSON messages
8
+ messages = encoded_messages.map do |message|
9
+ JSON.load(message)
10
+ end
11
+ # Extract the S3 event records
12
+ messages.map do |message|
13
+ message["Records"].map do |record|
14
+ ActiveSupport::HashWithIndifferentAccess.new(record)
15
+ end
16
+ end.flatten
17
+ end
18
+ alias s3_event_payloads s3_events
19
+
20
+ def s3_events?
21
+ event["Records"]&.any? { |r| r.dig("Sns", "Message") }
22
+ end
23
+ alias s3_event_payloads? s3_events?
24
+
25
+ def s3_objects
26
+ s3_events.map do |record|
27
+ record["s3"]["object"]
28
+ end
29
+ end
30
+
31
+ def s3_objects?
32
+ s3_events.any? { |r| r.dig("s3", "object") }
33
+ end
34
+
35
+ # Deprecated methods below
36
+ def s3_event
37
+ puts "WARN: s3_event is deprecated".color(:yellow)
38
+ puts "It can possibly drop events when they come in extremely fast."
39
+ puts "Use s3_events instead"
40
+ s3_events.first
41
+ end
42
+
43
+ def s3_object
44
+ puts "WARN: s3_object is deprecated".color(:yellow)
45
+ puts "It can possibly drop events when they come in extremely fast."
46
+ puts "Use s3_objects instead"
47
+ s3_objects.first
48
+ end
49
+ end
50
+ end
@@ -1,6 +1,6 @@
1
1
  module Jets::Job::Helpers
2
- module SnsEventHelper
3
- def sns_event_payloads
2
+ module SnsEvent
3
+ def sns_events
4
4
  records = event["Records"]
5
5
  return [] unless records
6
6
  records.map do |record|
@@ -8,17 +8,19 @@ module Jets::Job::Helpers
8
8
  ActiveSupport::HashWithIndifferentAccess.new(JSON.load(message))
9
9
  end
10
10
  end
11
+ alias sns_event_payloads sns_events
11
12
 
12
- def sns_event_payloads?
13
+ def sns_events?
13
14
  event["Records"]&.any? { |r| r.dig("Sns", "Message") }
14
15
  end
16
+ alias sns_event_payloads? sns_events?
15
17
 
16
18
  # Deprecated methods below
17
19
  def sns_event_payload
18
20
  puts "WARN: sns_event_payload is deprecated".color(:yellow)
19
- puts "It can possibly drop events when come in extremely fast."
20
- puts "Use sns_event_payloads instead"
21
- sns_event_payloads.first
21
+ puts "It can possibly drop events when they come in extremely fast."
22
+ puts "Use sns_events instead"
23
+ sns_events.first
22
24
  end
23
25
  end
24
26
  end
@@ -1,6 +1,6 @@
1
1
  module Jets::Job::Helpers
2
- module SqsEventHelper
3
- def sqs_event_payloads
2
+ module SqsEvent
3
+ def sqs_events
4
4
  records = event["Records"]
5
5
  return [] unless records
6
6
  records.map do |record|
@@ -8,17 +8,19 @@ module Jets::Job::Helpers
8
8
  ActiveSupport::HashWithIndifferentAccess.new(JSON.load(message))
9
9
  end
10
10
  end
11
+ alias sqs_event_payloads sqs_events
11
12
 
12
- def sqs_event_payloads?
13
+ def sqs_events?
13
14
  event["Records"]&.any? { |r| r.dig("body") }
14
15
  end
16
+ alias sqs_event_payloads? sqs_events?
15
17
 
16
18
  # Deprecated methods below
17
19
  def sqs_event_payload
18
20
  puts "WARN: sqs_event_payload is deprecated".color(:yellow)
19
- puts "It can possibly drop events when come in extremely fast."
20
- puts "Use sqs_event_payloads instead"
21
- sqs_event_payloads.first
21
+ puts "It can possibly drop events when they come in extremely fast."
22
+ puts "Use sqs_events instead"
23
+ sqs_events.first
22
24
  end
23
25
  end
24
26
  end
@@ -56,6 +56,8 @@ class Jets::Stack
56
56
 
57
57
  # Internal flag is mainly used to disable WARN messages
58
58
  def internal?
59
+ return true if internal_search_expression.include?("jets/base_path")
60
+ return true if internal_search_expression.include?("jets/s3_bucket_config")
59
61
  !!Dir.glob(internal_search_expression).first
60
62
  end
61
63
 
data/lib/jets/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Jets
2
- VERSION = "5.0.7"
2
+ VERSION = "5.0.8"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jets
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.7
4
+ version: 5.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
@@ -1039,11 +1039,11 @@ files:
1039
1039
  - lib/jets/job/dsl/s3_event.rb
1040
1040
  - lib/jets/job/dsl/sns_event.rb
1041
1041
  - lib/jets/job/dsl/sqs_event.rb
1042
- - lib/jets/job/helpers/kinesis_event_helper.rb
1043
- - lib/jets/job/helpers/log_event_helper.rb
1044
- - lib/jets/job/helpers/s3_event_helper.rb
1045
- - lib/jets/job/helpers/sns_event_helper.rb
1046
- - lib/jets/job/helpers/sqs_event_helper.rb
1042
+ - lib/jets/job/helpers/kinesis_event.rb
1043
+ - lib/jets/job/helpers/log_event.rb
1044
+ - lib/jets/job/helpers/s3_event.rb
1045
+ - lib/jets/job/helpers/sns_event.rb
1046
+ - lib/jets/job/helpers/sqs_event.rb
1047
1047
  - lib/jets/klass.rb
1048
1048
  - lib/jets/lambda/definition.rb
1049
1049
  - lib/jets/lambda/dsl.rb
@@ -1,45 +0,0 @@
1
- module Jets::Job::Helpers
2
- module S3EventHelper
3
- def s3_event_payloads
4
- messages = event["Records"].map do |record|
5
- record["Sns"]["Message"]
6
- end
7
- messages.map do |message|
8
- h = JSON.load(message)
9
- ActiveSupport::HashWithIndifferentAccess.new(h)
10
- end
11
- end
12
-
13
- def s3_event_payloads?
14
- event["Records"]&.any? { |r| r.dig("Sns", "Message") }
15
- end
16
-
17
- def s3_objects
18
- s3_event_payloads.map do |payload|
19
- records = payload["Records"]
20
- records.map do |record|
21
- record["s3"]["object"]
22
- end
23
- end.flatten
24
- end
25
-
26
- def s3_objects?
27
- s3_event_payloads["Records"]&.any? { |r| r.dig("s3", "object") }
28
- end
29
-
30
- # Deprecated methods below
31
- def s3_event
32
- puts "WARN: s3_event is deprecated".color(:yellow)
33
- puts "It can possibly drop events when come in extremely fast."
34
- puts "Use s3_event_payloads instead"
35
- s3_event_payloads.first
36
- end
37
-
38
- def s3_object
39
- puts "WARN: s3_object is deprecated".color(:yellow)
40
- puts "It can possibly drop events when come in extremely fast."
41
- puts "Use s3_objects instead"
42
- s3_objects.first
43
- end
44
- end
45
- end