Commit dd0243ea493b1a20e7cdd2ace302461de102fd6b

Authored by Jeff Lai
1 parent 75a22fe1
Exists in master

Add dingtalk sns apis

Showing 1 changed file with 42 additions and 1 deletions   Show diff stats
lib/dingtalk/api/sns.rb
1 module Dingtalk 1 module Dingtalk
2 module Api 2 module Api
3 - class Sns 3 + class Sns < Base
  4 + ACCESS_TOKEN = "sns_access_token"
  5 +
4 def initialize 6 def initialize
5 @app_id = Dingtalk.sns_app_id 7 @app_id = Dingtalk.sns_app_id
6 @app_secret = Dingtalk.sns_app_secret 8 @app_secret = Dingtalk.sns_app_secret
7 end 9 end
  10 +
  11 + def access_token
  12 + token = redis.get(ACCESS_TOKEN)
  13 + token.to_s.empty? ? set_access_token : token
  14 + end
  15 +
  16 + def set_access_token
  17 + res = http_get("gettoken?appid=#{@app_id}&appsecret=#{@app_secret}")
  18 + redis.set(ACCESS_TOKEN, res['access_token'])
  19 + redis.expire(key, 7200)
  20 + redis.get(ACCESS_TOKEN)
  21 + end
  22 +
  23 + def get_persistent_code(code)
  24 + params = { tmp_auth_code: code }
  25 + http_post("get_persistent_code?access_token=#{access_token}", params)
  26 + end
  27 +
  28 + def get_sns_token(openid, persistent_code)
  29 + params = {
  30 + openid: openid,
  31 + persistent_code: persistent_code
  32 + }
  33 +
  34 + http_post("get_sns_token?access_token=#{access_token}", params)
  35 + end
  36 +
  37 + def get_user_info(sns_token)
  38 + http_get("getuserinfo?sns_token=#{sns_token}")
  39 + end
  40 +
  41 + private
  42 + def default_params
  43 + {}
  44 + end
  45 +
  46 + def base_url
  47 + 'sns'
  48 + end
8 end 49 end
9 end 50 end
10 end 51 end