suite.rb
2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
module Dingtalk
module Api
class Suite < Base
SUITE_TICKET = "suite_ticket"
SUITE_ACCESS_TOKEN = "suite_access_token"
EXPIRATION = 7200
def initialize
@suite_key = Dingtalk.suite_key
@suite_secret = Dingtalk.suite_secret
end
def get_permanent_code(tmp_auth_code)
params = {
suite_access_token: suite_access_token,
tmp_auth_code: tmp_auth_code
}
http_post('get_permanent_code', params)
end
def suite_access_token
redis.get(SUITE_ACCESS_TOKEN) || set_suite_access_token
end
def set_suite_access_token
params = {
suite_key: @suite_key,
suite_secret: @suite_secret,
suite_ticket: suite_ticket
}
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)
end
def set_corp_access_token(corp_id, permanent_code)
params = {
suite_access_token: suite_access_token,
permanent_code: permanent_code,
auth_corpid: corp_id
}
res = http_post('get_corp_token', params)
redis.set("#{corp_id}_#{ACCESS_TOKEN}", res['access_token'])
redis.expire("#{corp_id}_#{ACCESS_TOKEN}", EXPIRATION)
redis.get("#{corp_id}_#{ACCESS_TOKEN}")
end
def activate_suite(corp_id, permanent_code)
params = {
suite_key: @suite_key,
suite_access_token: suite_access_token,
permanent_code: permanent_code,
auth_corpid: corp_id
}
http_post('activate_suite', params)
end
def get_auth_info(corp_id, permanent_code)
params = {
suite_key: @suite_key,
suite_access_token: suite_access_token,
permanent_code: permanent_code,
auth_corpid: corp_id
}
http_post('get_auth_info', params)
end
def suite_ticket
redis.get(SUITE_TICKET)
end
private
def default_params
{}
end
def base_url
'service'
end
end
end
end