Sha256: 4a6254f202ff2e257732fabddd65ebcb616a8626ef9e7cd1bc9d54eaf1e497ed

Contents?: true

Size: 1.31 KB

Versions: 6

Compression:

Stored size: 1.31 KB

Contents

module Jets::Job::Helpers
  module S3Event
    def s3_events
      encoded_messages = event["Records"].map do |record|
        record["Sns"]["Message"] # SNS message is JSON
      end
      # Decode the JSON messages
      messages = encoded_messages.map do |message|
        JSON.load(message)
      end
      # Extract the S3 event records
      messages.map do |message|
        message["Records"].map do |record|
          ActiveSupport::HashWithIndifferentAccess.new(record)
        end
      end.flatten
    end
    alias s3_event_payloads s3_events

    def s3_events?
      event["Records"]&.any? { |r| r.dig("Sns", "Message") }
    end
    alias s3_event_payloads? s3_events?

    def s3_objects
      s3_events.map do |record|
        record["s3"]["object"]
      end
    end

    def s3_objects?
      s3_events.any? { |r| r.dig("s3", "object") }
    end

    # Deprecated methods below
    def s3_event
      puts "WARN: s3_event is deprecated".color(:yellow)
      puts "It can possibly drop events when they come in extremely fast."
      puts "Use s3_events instead"
      s3_events.first
    end

    def s3_object
      puts "WARN: s3_object is deprecated".color(:yellow)
      puts "It can possibly drop events when they come in extremely fast."
      puts "Use s3_objects instead"
      s3_objects.first
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
jets-5.0.13 lib/jets/job/helpers/s3_event.rb
jets-5.0.12 lib/jets/job/helpers/s3_event.rb
jets-5.0.11 lib/jets/job/helpers/s3_event.rb
jets-5.0.10 lib/jets/job/helpers/s3_event.rb
jets-5.0.9 lib/jets/job/helpers/s3_event.rb
jets-5.0.8 lib/jets/job/helpers/s3_event.rb