一个用于与小世界社区restapi交互的库
swc-api的Python项目详细描述
swc_api包含用于与Small World Community restapi交互的类和实用程序。在
swc_connection()返回配置为实现JWT刷新、分页和限制的请求会话对象。在
CommunityToken类处理获取JWT令牌以与社区交互。在
安装
要在本地安装:
从Github签出项目:
> git clone https://github.com/citizensclimateeducation/community_api.git
然后(在项目的虚拟环境处于活动状态时,您将使用它):
^{pr2}$要通过pypi安装:
> pip install swc-api
文件
要基于环境变量创建会话,请创建一个.env文件,并根据您的社区实例设置以下变量:
export SWC_AUDIENCE=[community.yourdomain.org] export SWC_APP_ID=[Application ID for your OAuth Application] export SWC_USER_ID=[Authorized User for your OAuth Application] export SWC_SECRET=[OAuth secret for your Oauth Application]
在运行应用程序之前获取.env文件,并且在实例化 api客户端:
> from swc_api import swc_connection > swc = swc_connection() > # make calls to the API endpoint > group_members = swc.get_all("groups/[groupId]/members", params={"embed": "user"})
但是,您也可以手动传递这些变量:
from swc_api import swc_connection, CommunityToken swc = swc_connection( community_domain="[your domain]", app_id="[OAuth App ID]", user_id=[Authorized User Id], app_secret="OAuth App Secret", ) group_members = swc.get_all("groups/[groupId]/members", params={"embed": "user"})
用法和分页
您可以使用swc_connection进行常规的requests调用,并将收到一个标准的Response对象。在
会话还有一个get_all方法,它将处理长度超过500个对象的结果集的分页。这个 get_all方法将返回一个JSON响应,而不是requests.models.Response对象。在
更新的示例如下:
swc.post("groups/[id]/members", json={"userId": "[userId]"}) # response { 'id': '[membershipId]', 'groupId': '[groupId]', 'userId': '[userId]', 'status': '1', 'joinDate': '2020-07-20T12:43:07-07:00', 'invited': True }
注释和注意事项
目前节流和错误处理是非常基本的。返回每个响应后,会话将为 持续时间由SWC_API_RATE表示。这意味着不考虑呼叫的持续时间,也不考虑 在其他线程中进行的调用。也没有内置智能重试机制。在
考虑到这些限制,这可能不应该用于面向前端的生产应用程序,而应该用于其他应用程序 用于分析数据、查看API中提供的字段(而不是社区报告)或进行批量更新 在社区管理导入管理器中不可用。在
- 项目
标签: