Sha256: b5c32a0cd4b5bb29a31c0bbb876b90fac990aee952bbbc8c06645e1b4532eaeb

Contents?: true

Size: 1.47 KB

Versions: 2

Compression:

Stored size: 1.47 KB

Contents

module BBK
  module App
    class Dispatcher
      class Message

        attr_reader :consumer, :delivery_info, :headers, :body

        def initialize(consumer, delivery_info, headers, body, *_args, **_kwargs)
          @consumer = consumer
          @delivery_info = delivery_info
          @headers = headers.to_h.with_indifferent_access
          @body = body
        end

        # Lazy body parsing
        def payload
          @payload ||= begin
            JSON.parse(@body).with_indifferent_access
          rescue StandardError
            {}.with_indifferent_access
          end
        end

        def ack(*args, answer: nil, **kwargs)
          consumer.ack(self, *args, answer: answer, **kwargs)
        end

        def nack(*args, error: nil, **kwargs)
          consumer.nack(self, *args, error: error, **kwargs)
        end

        def message_id
          raise NotImplementedError.new("#{self.class.name} does not implement #{__method__} method")
        end

        def reply_to
          raise NotImplementedError.new("#{self.class.name} does not implement #{__method__} method")
        end

        def user_id
          raise NotImplementedError.new("#{self.class.name} does not implement #{__method__} method")
        end

        def reply_message_id(addon)
          Digest::SHA1.hexdigest("#{addon}#{message_id}")
        end

        def to_h
          {
            headers: headers,
            body:    body
          }
        end

      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
bbk-app-1.1.1.273312 lib/bbk/app/dispatcher/message.rb
bbk-app-1.1.1.273294 lib/bbk/app/dispatcher/message.rb