Sha256: b4a1445a92d830e7519a80c8d4162f6e933cd4fb1a5f6c30de7d1ba9c25e0ebf

Contents?: true

Size: 818 Bytes

Versions: 4

Compression:

Stored size: 818 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.hget(context_key, field)
      JSON.parse(data) if data.present?
    rescue JSON::ParserError
      data
    end

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

    def add(field, content)
      $redis.hset context_key, field, content
    end

    def clear
      $redis.del context_key
    end

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

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
bot-0.0.33 lib/bot/context.rb
bot-0.0.32 lib/bot/context.rb
bot-0.0.31 lib/bot/context.rb
bot-0.0.30 lib/bot/context.rb