一个用于与小世界社区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中提供的字段(而不是社区报告)或进行批量更新 在社区管理导入管理器中不可用。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在Android Studio中使用while循环显示包含textview对象的数据   创建名为“userController”的bean时发生java错误:通过字段“userService”表示未满足的依赖关系   java PDFBox PDFImageWrite。writeImage未正确处理所有字符   java无法识别代码中的nzec错误   无法更改java TabLayout字体   在Java中使用子字符串删除部分字符串   Java中的listener addPropertyChangeListener方法   java可以同时拖动多个对象   java如何将数组中的值添加到向量中   java为什么在Camel 3.7.3中无法正确计算属性?   与后端问题不同的机器中的java客户端资源   带字符串的java分割字节数组?   java On_选项_项目_选择的方法说明   java如何在画布的父画中画一个圆?   连接超时和打开连接数的java Netty通道配置   java mysql中如何防止向数据库中插入重复数据   升级到macOS Big Sur后,java无法启动Neo4j控制台应用程序   在Java中使用XSLT将XML转换为HTMLString的ajax   java无法使用Apache POI获取Excel工作表中的数据