diff --git a/lib/dingtalk/api/base.rb b/lib/dingtalk/api/base.rb index 6d2b9fe..a997eb6 100644 --- a/lib/dingtalk/api/base.rb +++ b/lib/dingtalk/api/base.rb @@ -11,7 +11,7 @@ module Dingtalk end def access_token - token = redis.get("#{@corp.corp_id}_#{ACCESS_TOKEN}") + token = redis.get("#{redis_prefix}:#{@corp.corp_id}_#{ACCESS_TOKEN}") token.to_s.empty? ? set_access_token : token end @@ -24,25 +24,26 @@ module Dingtalk end def js_ticket - ticket = redis.get("#{@corp.corp_id}_#{JS_TICKET}") + ticket = redis.get("#{redis_prefix}:#{@corp.corp_id}_#{JS_TICKET}") ticket.to_s.empty? ? set_js_ticket : ticket end def set_corp_access_token res = http_get("#{ENDPOINT}/gettoken?corpid=#{@corp.corp_id}&corpsecret=#{@corp.corp_secret}") - key = "#{@corp.corp_id}_#{ACCESS_TOKEN}" - redis.set(key, res['access_token']) - redis.expire(key, 6600) - redis.get(key) + key = "#{redis_prefix}:#{@corp.corp_id}_#{ACCESS_TOKEN}" + redis.set(key, res['access_token'], {ex: 6600}) + res['access_token'] end def set_js_ticket - key = "#{@corp.corp_id}_#{JS_TICKET}" + key = "#{redis_prefix}:#{@corp.corp_id}_#{JS_TICKET}" res = http_get("#{ENDPOINT}/get_jsapi_ticket?access_token=#{access_token}") - redis.set(key, res['ticket']) - # redis.expire(key, res['expires_in']) - redis.expire(key, 6600) - redis.get(key) + redis.set(key, res['ticket'], {ex: 6600}) + res['ticket'] + end + + def redis_prefix + Dingtalk.config.redis_prefix || 'dingtalk' end private diff --git a/lib/dingtalk/api/sns.rb b/lib/dingtalk/api/sns.rb index 0c4428c..c723206 100644 --- a/lib/dingtalk/api/sns.rb +++ b/lib/dingtalk/api/sns.rb @@ -9,15 +9,14 @@ module Dingtalk end def access_token - token = redis.get(ACCESS_TOKEN) + token = redis.get("#{redis_prefix}:#{ACCESS_TOKEN}") token.to_s.empty? ? set_access_token : token end def set_access_token res = http_get("gettoken?appid=#{@app_id}&appsecret=#{@app_secret}") - redis.set(ACCESS_TOKEN, res['access_token']) - redis.expire(ACCESS_TOKEN, 6600) - redis.get(ACCESS_TOKEN) + redis.set("#{redis_prefix}:#{ACCESS_TOKEN}", res['access_token'], {ex: 6600}) + res['access_token'] end def get_persistent_code(code) diff --git a/lib/dingtalk/api/suite.rb b/lib/dingtalk/api/suite.rb index a44d2e2..c263adb 100644 --- a/lib/dingtalk/api/suite.rb +++ b/lib/dingtalk/api/suite.rb @@ -18,7 +18,7 @@ module Dingtalk end def suite_access_token - token = redis.get(SUITE_ACCESS_TOKEN) + token = redis.get("#{redis_prefix}:#{SUITE_ACCESS_TOKEN}") token.to_s.empty? ? set_suite_access_token : token end @@ -30,9 +30,8 @@ module Dingtalk } res = http_post('get_suite_token', params) # TODO globally check response values - redis.set(SUITE_ACCESS_TOKEN, res['suite_access_token']) - redis.expire(SUITE_ACCESS_TOKEN, EXPIRATION) - redis.get(SUITE_ACCESS_TOKEN) + redis.set("#{redis_prefix}:#{SUITE_ACCESS_TOKEN}", res['suite_access_token'], {ex: EXPIRATION}) + res['suite_access_token'] end def set_corp_access_token(corp_id, permanent_code) @@ -41,9 +40,8 @@ module Dingtalk auth_corpid: corp_id } res = http_post("get_corp_token?suite_access_token=#{suite_access_token}", params) - redis.set("#{corp_id}_#{ACCESS_TOKEN}", res['access_token']) - redis.expire("#{corp_id}_#{ACCESS_TOKEN}", EXPIRATION) - redis.get("#{corp_id}_#{ACCESS_TOKEN}") + redis.set("#{redis_prefix}:#{corp_id}_#{ACCESS_TOKEN}", res['access_token'], {ex: EXPIRATION}) + res['access_token'] end def activate_suite(corp_id, permanent_code) @@ -66,7 +64,7 @@ module Dingtalk end def suite_ticket - redis.get(SUITE_TICKET) + redis.get("#{redis_prefix}:#{SUITE_TICKET}") end private diff --git a/lib/dingtalk/config.rb b/lib/dingtalk/config.rb index 6f90d3f..efdbb51 100644 --- a/lib/dingtalk/config.rb +++ b/lib/dingtalk/config.rb @@ -3,7 +3,7 @@ module Dingtalk attr_accessor :config def configure - yield self.config ||= Config.new + yield self.config ||= Config.new end def dingtalk_redis @@ -37,6 +37,6 @@ module Dingtalk end class Config - attr_accessor :redis, :redis_options, :suite_key, :suite_secret, :suite_aes_key, :suite_token, :sns_app_id, :sns_app_secret + attr_accessor :redis, :redis_prefix, :redis_options, :suite_key, :suite_secret, :suite_aes_key, :suite_token, :sns_app_id, :sns_app_secret end end -- libgit2 0.21.0