119 lines
5.1 KiB
Python
119 lines
5.1 KiB
Python
# coding: utf-8
|
||
|
||
from __future__ import absolute_import, division, print_function, unicode_literals
|
||
|
||
from typing import List
|
||
|
||
import attr
|
||
|
||
from utils.feishu.dt_help import to_json_decorator
|
||
|
||
|
||
@to_json_decorator
|
||
@attr.s
|
||
class I18NTitle(object):
|
||
en_us = attr.ib(type=str, default=None)
|
||
zh_cn = attr.ib(type=str, default=None)
|
||
ja_jp = attr.ib(type=str, default=None)
|
||
|
||
|
||
@to_json_decorator
|
||
@attr.s
|
||
class SimpleUser(object):
|
||
"""用户对象
|
||
"""
|
||
name = attr.ib(type=str, default=None)
|
||
open_id = attr.ib(type=str, default=None)
|
||
user_id = attr.ib(type=str, default=None)
|
||
|
||
|
||
@to_json_decorator
|
||
@attr.s
|
||
class User(object):
|
||
"""用户对象
|
||
"""
|
||
avatar_url = attr.ib(type=str, default='')
|
||
name = attr.ib(type=str, default='')
|
||
open_id = attr.ib(type=str, default='')
|
||
email = attr.ib(type=str, default='') # 需要申请获取email权限才有
|
||
mobile = attr.ib(type=str, default='') # 用户手机号,已申请"获取用户手机号"权限的企业自建应用返回该字段
|
||
user_id = attr.ib(type=str, default='') # 用户的user_id
|
||
status = attr.ib(type=int, default=0)
|
||
|
||
|
||
@to_json_decorator
|
||
@attr.s
|
||
class Bot(object):
|
||
"""机器人对象
|
||
"""
|
||
activate_status = attr.ib(type=int, default=None) # TODO 啥意思
|
||
app_name = attr.ib(type=str, default=None)
|
||
avatar_url = attr.ib(type=str, default=None)
|
||
open_id = attr.ib(type=str, default='') # 啥意思,没有在文档中
|
||
ip_white_list = attr.ib(type=List[str], default=attr.Factory(list)) # type: List[str]
|
||
|
||
|
||
@to_json_decorator
|
||
@attr.s
|
||
class Chat(object):
|
||
"""会话信息,包括和机器人的私聊 + 群聊
|
||
"""
|
||
avatar = attr.ib(type=str, default='') # 群头像
|
||
description = attr.ib(type=str, default='') # 群描述
|
||
chat_id = attr.ib(type=str, default=None)
|
||
name = attr.ib(type=str, default='') # 群聊的名字,如果是p2p就是空
|
||
owner_user_id = attr.ib(type=str, default='') # 群主的user_id,机器人是群主的时候没有这个字段
|
||
owner_open_id = attr.ib(type=str, default='') # 群主的open_id,机器人是群主的时候没有这个字段
|
||
|
||
|
||
@to_json_decorator
|
||
@attr.s
|
||
class DetailChat(object):
|
||
"""详细的会话信息,包括和机器人的私聊 + 群聊
|
||
"""
|
||
chat_id = attr.ib(type=str, default=None)
|
||
avatar = attr.ib(type=str, default='') # 群头像
|
||
description = attr.ib(type=str, default='') # 群描述
|
||
name = attr.ib(type=str, default='') # 群聊的名字,如果是p2p就是空
|
||
i18n_names = attr.ib(type=I18NTitle, default=None) # 国际化名称
|
||
members = attr.ib(type=List[SimpleUser], default=attr.Factory(list)) # type: List[SimpleUser]
|
||
type = attr.ib(type=str, default=None) # 群类型,group表示群聊,p2p表示单聊
|
||
owner_user_id = attr.ib(type=str, default='') # 群主的user_id,机器人是群主的时候没有这个字段
|
||
owner_open_id = attr.ib(type=str, default='') # 群主的open_id,机器人是群主的时候没有这个字段
|
||
|
||
|
||
@to_json_decorator
|
||
@attr.s
|
||
class MinaCodeToSessionResp(object):
|
||
"""小程序 code 换取 session 对象
|
||
"""
|
||
open_id = attr.ib(type=str, default=None) # 用户唯一标识,openid 用于在同一个应用中对用户进行标识,用户和应用可以确定一个唯一的 openid
|
||
union_id = attr.ib(type=str, default=None) # 用户在同一个开发者所属的多个应用中唯一标识,一个用户在同一个开发者所属的多个应用中,unionid 唯一
|
||
session_key = attr.ib(type=str, default=None) # 会话密钥
|
||
tenant_key = attr.ib(type=str, default=None) # 用户所在租户唯一标识
|
||
employee_id = attr.ib(type=str, default='') # 用户在同一个租户下的唯一标识(可选)
|
||
token_type = attr.ib(type=str, default='') # 此处为Bearer
|
||
access_token = attr.ib(type=str, default='') # user_access_token,用于获取用户资源
|
||
expires_in = attr.ib(type=int, default=0) # user_access_token过期时间
|
||
refresh_token = attr.ib(type=str, default='') # 刷新用户 access_token 时使用的 token
|
||
|
||
|
||
@to_json_decorator
|
||
@attr.s
|
||
class OAuthCodeToSessionResp(object):
|
||
"""获取登录用户身份,OAuth code 换取 session 对象
|
||
"""
|
||
access_token = attr.ib(type=str, default=None) # user_access_token,用于获取用户资源
|
||
avatar_url = attr.ib(type=str, default=None) # 用户头像
|
||
avatar_thumb = attr.ib(type=str, default=None) # 用户头像 72x72
|
||
avatar_middle = attr.ib(type=str, default=None) # 用户头像 240x240
|
||
avatar_big = attr.ib(type=str, default=None) # 用户头像 640x640
|
||
expires_in = attr.ib(type=int, default=None) # access_token 的有效期,单位: 秒
|
||
name = attr.ib(type=str, default=None) # 用户姓名
|
||
en_name = attr.ib(type=str, default=None) # 用户英文姓名
|
||
open_id = attr.ib(type=str, default=None) # 用户在应用内的唯一标识
|
||
tenant_key = attr.ib(type=str, default=None) # 当前企业标识
|
||
refresh_token = attr.ib(type=str, default=None) # 刷新用户 access_token 时使用的 token
|
||
refresh_expires_in = attr.ib(type=int, default=None) # refresh_token过期时间,秒数
|
||
token_type = attr.ib(type=str, default=None) # 此处为 Bearer
|