Commit dd0243ea493b1a20e7cdd2ace302461de102fd6b
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 |