Sha256: 49847b94aa3b4d1953e0bfe528da9a49a4cf3d5596be2b6923c5484c3a6ed751

Contents?: true

Size: 767 Bytes

Versions: 1

Compression:

Stored size: 767 Bytes

Contents

module Hipbot
  class Response < Struct.new(:bot, :reaction, :room, :message)
    delegate :sender, :recipients, :body, :to => :message

    def initialize bot, reaction, room, message
      super
      extend(bot.helpers)
    end

    def invoke arguments
      instance_exec(*arguments, &reaction.block)
    end

    private

    def reply string, room = self.room
      return bot.send_to_user(sender, string) if room.nil?
      bot.send_to_room(room, string)
    end

    [:get, :post, :put, :delete].each do |http_verb|
      define_method http_verb do |url, query = {}, &block|
        http = ::EM::HttpRequest.new(url).send(http_verb, :query => query)
        http.callback { block.call(::Hipbot::HttpResponse.new(http)) if block }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
hipbot-0.1.0 lib/hipbot/response.rb