Sha256: a8c322c433ad9f0988939a55b082251dd7e3aeb53e04389edcde446e21be0996

Contents?: true

Size: 696 Bytes

Versions: 1

Compression:

Stored size: 696 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 interact(interactor)
      listen_to(interactor)
      yield(interactor) if block_given?
      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

1 entries across 1 versions & 1 rubygems

Version Path
husky-0.3.5 lib/husky/ears.rb