Sha256: 78551ad34b8d911b96343587656d680df4eccf48f8fc89b1c69328996d605e17

Contents?: true

Size: 842 Bytes

Versions: 8

Compression:

Stored size: 842 Bytes

Contents

require 'redis'

module Bot
  class Context
    attr_accessor :redis_client, :user

    def initialize(user, redis_client)
      @redis_client = redis_client
      @user = user
    end

    def method_missing(m, *args, &block)
      if m =~ /.+=/
        self.add(m.to_s.gsub('=', ''), *args)
      else
        self.get(m)
      end
    end

    def get(field)
      data = redis_client.hget(context_key, field)
      JSON.parse(data) if data.present?
    rescue JSON::ParserError
      data
    end

    def set(context)
      self.clear
      redis_client.hmset(context_key, context.map { |k, v| [k, v] }.flatten)
    end

    def add(field, content)
      redis_client.hset context_key, field, content
    end

    def clear
      redis_client.del context_key
    end

    def context_key
      "bot:context:#{user.id}"
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
bot-0.0.42 lib/bot/context.rb
bot-0.0.41 lib/bot/context.rb
bot-0.0.40 lib/bot/context.rb
bot-0.0.39 lib/bot/context.rb
bot-0.0.38 lib/bot/context.rb
bot-0.0.37 lib/bot/context.rb
bot-0.0.35 lib/bot/context.rb
bot-0.0.34 lib/bot/context.rb