Sha256: cc1b01f02d3b7cffeef9f7de43789dbf438a3f5ea186a6c402884cf44837b94a

Contents?: true

Size: 1.04 KB

Versions: 10

Compression:

Stored size: 1.04 KB

Contents

module Husky
  module Ears

    def listen_to(object)
      object.add_listener(responder_class.new(self))
    end

    def responder_class
      raise "Rails is not running" unless defined?(Rails)
      "#{controller_name.camelize}Responder".constantize
    end

    def husky_responder
      responder_class.new(self)
    end

    def interact(interactor)
      yield(interactor) if block_given?
      interactor.add_listener(husky_responder)
      interactor.run
    end

    # DEPRECATE --> Build out custom entity serialization!
    # This introduces a dependency on ActiveModelSerializers
    def deliver_entities(entities, *options)
      raise "Rails is not running" unless defined?(Rails)
      serve_for(entities.map(&:data), *options)
    end

    def deliver_entity(entity, *options)
      raise "Rails is not running" unless defined?(Rails)
      serve_for(entity.data, *options)
    end

    private

    def serve_for(target, *options)
      args = { json: target }
      options.each { |option| args.merge!(option) }
      render(args)
    end

  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
husky-0.5.15 lib/husky/ears.rb
husky-0.5.14 lib/husky/ears.rb
husky-0.5.13 lib/husky/ears.rb
husky-0.5.12 lib/husky/ears.rb
husky-0.5.11 lib/husky/ears.rb
husky-0.5.10 lib/husky/ears.rb
husky-0.5.9 lib/husky/ears.rb
husky-0.5.8 lib/husky/ears.rb
husky-0.5.7 lib/husky/ears.rb
husky-0.5.6 lib/husky/ears.rb