ServiceCorpApi.py
2.5 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
#!/usr/bin/env python
# -*- coding:utf-8 -*-
##
# Copyright (C) 2018 All rights reserved.
#
# @File ServiceCorp.py
# @Brief
# @Author abelzhu, abelzhu@tencent.com
# @Version 1.0
# @Date 2018-02-24
#
#
from abc import ABC
from .CorpApi import *
SERVICE_CORP_API_TYPE = {
'GET_CORP_TOKEN': ['/cgi-bin/service/get_corp_token?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'],
'GET_SUITE_TOKEN': ['/cgi-bin/service/get_suite_token', 'POST'],
'GET_PRE_AUTH_CODE': ['/cgi-bin/service/get_pre_auth_code?suite_access_token=SUITE_ACCESS_TOKEN', 'GET'],
'SET_SESSION_INFO': ['/cgi-bin/service/set_session_info?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'],
'GET_PERMANENT_CODE': ['/cgi-bin/service/get_permanent_code?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'],
'GET_AUTH_INFO': ['/cgi-bin/service/get_auth_info?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'],
'GET_ADMIN_LIST': ['/cgi-bin/service/get_admin_list?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'],
'GET_USER_INFO_BY_3RD': ['/cgi-bin/service/getuserinfo3rd?suite_access_token=SUITE_ACCESS_TOKEN', 'GET'],
'GET_USER_DETAIL_BY_3RD': ['/cgi-bin/service/getuserdetail3rd?suite_access_token=SUITE_ACCESS_TOKEN', 'POST'],
}
class ServiceCorpApi(CorpApi, ABC):
def __init__(self, suite_id, suite_secret, suite_ticket, corpid, secret, auth_corpid=None, permanent_code=None):
super().__init__(corpid, secret)
self.suite_id = suite_id
self.suite_secret = suite_secret
self.suite_ticket = suite_ticket
# 调用 CorpAPI 的function, 需要设置这两个参数
self.auth_corpid = auth_corpid
self.permanent_code = permanent_code
self.access_token = None
self.suite_access_token = None
# override CorpApi 的 refreshAccessToken, 使用第三方服务商的方法
def getAccessToken(self):
if self.access_token is None:
self.refreshAccessToken()
return self.access_token
def refreshAccessToken(self):
response = self.httpCall(
SERVICE_CORP_API_TYPE['GET_CORP_TOKEN'],
{
"auth_corpid": self.auth_corpid,
"permanent_code": self.permanent_code,
})
self.access_token = response.get('access_token')
def getSuiteAccessToken(self):
if self.suite_access_token is None:
self.refreshSuiteAccessToken()
return self.suite_access_token
def refreshSuiteAccessToken(self):
response = self.httpCall(
SERVICE_CORP_API_TYPE['GET_SUITE_TOKEN'],
{
"suite_id": self.suite_id,
"suite_secret": self.suite_secret,
"suite_ticket": self.suite_ticket,
})
self.suite_access_token = response.get('suite_access_token')