Sha256: 9e2b8ef83435f02b248801061157c7bc3dfbb53f1ea97568d86fb9c7dc282d7c

Contents?: true

Size: 780 Bytes

Versions: 2

Compression:

Stored size: 780 Bytes

Contents

module Husky
  module Ears

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

    def responder_class
      "#{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

    def deliver_entities(entities, *options)
      serve_for(entities.map(&:object), *options)
    end

    def deliver_entity(entity, *options)
      serve_for(entity.object, *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

2 entries across 2 versions & 1 rubygems

Version Path
husky-0.3.8 lib/husky/ears.rb
husky-0.3.7 lib/husky/ears.rb