arkid_client.app.client 源代码
"""
Define AppClient
"""
from arkid_client.authorizers import BasicAuthorizer
from arkid_client.base import BaseClient
from arkid_client.exceptions import NodeAPIError, ArkIDSDKUsageError
from arkid_client.response import ArkIDHTTPResponse
[文档]class AppClient(BaseClient):
"""
应用管理客户端,用于与 ArkID 服务端应用管理相关
接口的访问操作。
**Methods**
* :py:meth:`.query_app_list`
* :py:meth:`.create_app`
* :py:meth:`.query_app`
* :py:meth:`.update_app`
* :py:meth:`.delete_app`
* :py:meth:`.register_app`
"""
allowed_authorizer_types = [BasicAuthorizer]
error_class = NodeAPIError
default_response_class = ArkIDHTTPResponse
def __init__(self, base_url, authorizer=None, **kwargs):
BaseClient.__init__(self, base_url, "org", authorizer=authorizer, **kwargs)
[文档] def query_app_list(self, oid: str, **params):
"""
获取应用信息列表
(``GET /siteapi/v1/org/<oid>/app/``)
**Parameters**:
``name`` (*str*)
查询关键字,进行用户名、姓名、邮箱、手机号模糊搜索
``node_uid`` (*str*)
查询该节点的权限
``user_uid`` (*int*)
查询该用户权限
``owner_access`` (*Boolean*)
限定访问权限结果
**Examples**
>>> ac = arkid_client.AppClient(...)
>>> apps = ac.query_app_list(...)
>>> for app in apps:
>>> print(app['name'], 'uid: '
>>> ,app['uid'])
"""
self.logger.info("正在调用 AppClient.query_app_list() 接口与 ArkID 服务端进行交互")
return self.get(path='{}/app/'.format(oid), params=params)
[文档] def create_app(self, oid: str, json_body: dict):
"""
创建应用
(``POST /siteapi/v1/org/<oid>/app/``)
**Parameters**:
json_body (*dict*)
应用的元信息, 参数详情请参考接口文档
**Examples**
>>> ac = arkid_client.AppClient(...)
>>> app = ac.create_app(...)
>>> print('app is', app)
**External Documentation**
关于 `应用的元数据 \
<https://arkid.docs.apiary.io/#reference/app/0/1>`_
详情请参阅API文档。
"""
self.logger.info("正在调用 AppClient.create_app() 接口与 ArkID 服务端进行交互")
return self.post(path='{}/app/'.format(oid), json_body=json_body)
[文档] def query_app(self, oid: str, uid: str):
"""
获取特定应用
(``GET /siteapi/v1/org/<oid>/app/<uid>/``)
**Parameters**:
``oid`` (*str*)
组织的唯一标识
``uid`` (*str*)
应用的唯一标识
**Examples**
>>> ac = arkid_client.AppClient(...)
>>> app = ac.query_app()
>>> print('app: ', app)
"""
self.logger.info("正在调用 AppClient.query_app() 接口与 ArkID 服务端进行交互")
return self.get(path='{}/app/{}/'.format(oid, uid))
[文档] def update_app(self, oid: str, uid: str, json_body: dict):
"""
修改特定应用
(``PATCH /siteapi/v1/org/<oid>/app/<uid>/``)
**Parameters**:
``oid`` (*str*)
组织的唯一标识
``uid`` (*str*)
应用的唯一标识
**Examples**
>>> ac = arkid_client.AppClient(...)
>>> app = ac.update_app(...)
>>> print('app: ', app)
"""
self.logger.info("正在调用 AppClient.update_app() 接口与 ArkID 服务端进行交互")
return self.patch(path='{}/app/{}/'.format(oid, uid), json_body=json_body)
[文档] def delete_app(self, oid: str, uid: str):
"""
修改特定应用
(``DELETE /siteapi/v1/org/<oid>/app/<uid>/``)
**Parameters**:
``oid`` (*str*)
组织的唯一标识
``uid`` (*str*)
应用的唯一标识
**Examples**
>>> ac = arkid_client.AppClient(...)
>>> app = ac.delete_app(...)
"""
self.logger.info("正在调用 AppClient.delete_app() 接口与 ArkID 服务端进行交互")
return self.delete(path='{}/app/{}/'.format(oid, uid))
[文档] def register_app(self, oid: str, uid: str, protocol: str, json_body: dict):
"""
注册应用
(``PATCH /siteapi/v1/org/<oid>/app/<uid>/*/``)
**Parameters**:
``oid`` (*str*)
组织的唯一标识
``uid`` (*str*)
应用的唯一标识
``protocol`` (*str*)
应用所采用的协议
``json_body`` (*dict*)
应用的元信息
**Examples**
>>> ac = arkid_client.AppClient(...)
>>> app = ac.register_app(...)
>>> print('app: ', app)
"""
protocols_map = {
'oauth': 'oauth/',
}
if protocol not in protocols_map:
self.logger.info("无法注册应用, 暂不支持的协议类型")
raise ArkIDSDKUsageError('无法注册应用,暂不支持的操作类型(invalid protocol)')
self.logger.info("正在调用 AppClient.register_app() 接口与 ArkID 服务端进行交互")
return self.post(path='{}/app/{}/{}/'.format(oid, uid, protocols_map[protocol]), json_body=json_body)