跳转到主要内容

访问MAX API的客户端库包装器。

项目描述

MAXClient

访问MAX API的客户端库包装器。

认证

MaxClient使用MAX API,因此需要有效的max OAuth2用户名/令牌对来执行任何请求。为了认证maxlient并将其准备好使用,创建一个maxclient实例,指定Max服务器URL和Oauth2服务器URL。

>>> from maxclient import MaxClient
>>> client = MaxClient('http://max.server.com', oauth_server='http://oauth.server.com')

一旦您有了客户端实例,您可以使用用户名/令牌对对其进行认证。

>>> client.setActor('user.name')
>>> client.setToken('NLfIgUgBgODd4sdAgDsFgdAffFigfBf0')

如果您没有用户名的令牌,maxclient可以为您获取它,并提供生成令牌的原始密码。

>>> client.login(username='user.name', password='password')

client.login在没有提供用户名或密码时变为交互式,因此您可以在CLI脚本中使用它。

client.login()
>>> Username: user.name
>>> Password: *********

使用方法

客户端有两个版本,一个是类似RPC的,另一个是类似REST的。默认的(RPC)版本为max上的每个API端点实现一个方法,例如

>>> client.addUser('user.name')
>>> client.getUser('user.name')

rpc-client以元组的形式返回包含3个值的响应,其形式为

(True, 201, {})

其中第一个值表示请求是否成功完成,第二个是请求的响应代码,第三个是响应内容。响应内容可能是从JSON加载的dict或list,或者如果没有找到有效的JSON响应,则为None。

请注意,并非所有端点都可能在rpc-client中实现,因为每个端点都需要不同的方法。有关每个方法的参数,请参阅client.py中的代码。

REST-ish客户端

Rest-ish客户端是一种尝试为Max API创建通用包装器的尝试,这样您就可以使用一个唯一的客户端轻松访问所有可用的端点,而无需不断更新它。认证方式与rpc客户端类似,您只需从不同的位置导入即可。

>>> from maxclient.rest import MaxClient

要使用此客户端,您必须了解Max API的工作方式和结构,因为API的访问是通过模仿URL访问实现的,例如。要访问添加用户的端点,如Max文档所述,您必须向/people/{username}发送一个POST请求。要使用Maxclient实现这一点

>>> maxclient.people['user.name'].post()

其中people是一个资源集合(端点URL上的一个固定名称),而‘user.name’是一个资源项(端点URL上的一个变量名称)。因此,资源集合作为属性访问,资源项作为类似字典的访问器。资源项和资源集合都可以包含对方。

>>> maxclient.people['user.name'].activities.get()

命令的最后部分表示将用于访问端点的方法。资源项和集合对象是懒加载的,所以任何操作都会执行,直到在资源上执行一个方法。

传递给客户端的命名参数将在进行.post().put()请求时作为JSON传递。因此,如果我们执行

>>> maxclient.people['user.name'].post(displayName='User Name')

将从一个json生成kwargs,并将其发送到请求体中

{
    "displayName": "User Name"
}

如果您愿意,可以准备一个包含所有需要在该json中出现的参数的字典,并通过data参数传递,结果将是相同的。如果存在data参数,则忽略所有其他kwargs

>>> params = dict(displayName='User Name')
>>> maxclient.people['user.name'].post(data=params)

某些端点方法定义了一些合理的默认值。您可以在defaults.py中查看定义的默认值,或通过代码检查它们

>>> maxclient.people['user.name'].defaults('post')
{'object': {'objectType': 'note'}}

这些默认值用作基础,通过kwargs提供的内容进行更新。这样,当我们发出此请求时

>>> maxclient.people['user.name'].post(generator='Twitter')

请求体中将发送的数据将是默认值和kwargs的组合

{
    "object": {
        "objectType": "note"
    }
    "generator": "Twitter"
}

您可以将kwargs以key_subkey的形式传递,它们将被解释为嵌套键。因此,您可以执行以下操作

>>> maxclient.people['user.name'].post(generator='Twitter', object_content='Hello world')

这会导致以下请求体

{
    "object": {
        "objectType": "note",
        "content": "Hellow World"
    }
    "generator": "Twitter"
}

如果您的请求需要查询字符串参数,您必须通过qs参数作为字典提供它们,键值对将被编码为查询字符串,例如,通过?limit01限制请求的结果

>>> maxclient.people['carles.bruguera'].activities.get(qs={'limit': 1})

最后一点,如果您需要上传文件,请按如下方式通过file_upload参数提供文件对象或流对象。提供原始打开文件,不要读取它,我们需要的是对象而不是文件内容

>>> avatar = open('/path/to/avatar.png', 'rb')
>>> maxclient.people['carles.bruguera'].avatar.post(upload_file=avatar)

当请求成功时,Maxclient将响应Max解析后的JSON响应,并在任何其他情况下引发RequestError异常,异常消息将指示错误的原因。

有关Max的更多信息,请参阅

https://github.com/UPCnet/max https://github.com/UPCnet/maxserver.devel

变更日志

5.1 (2015-06-17)

5.0 (2015-05-18)

  • 更新资源 [Carles Bruguera]

  • 不展开下划线的选项 [Carles Bruguera]

  • 将基本客户端调整为更好的子类化 [Carles Bruguera]

  • 将基本客户端调整为更好的子类化 [Carles Bruguera]

  • 基于域的实例化 [Carles Bruguera]

  • 允许子类化的客户端覆盖路由和默认值 [Carles Bruguera]

4.0.7 (2015-04-14)

  • 添加用户订阅的默认值 [Carles Bruguera]

  • 在获取服务器信息失败时引发异常 [Carles Bruguera]

4.0.6 (2014-11-25)

  • 获取公共服务器信息的属性 [Carles Bruguera]

4.0.5 (2014-11-25)

  • 修复与旧版oauth的wsgi客户端 [Carles Bruguera]

  • 微调404错误 [Carles Bruguera]

  • 更多默认值 [Carles Bruguera]

4.0.4 (2014-07-16)

  • 仅在需要wsgi功能时依赖max [Carles Bruguera]

4.0.3 (2014-07-08)

  • 更新默认值 [Carles Bruguera]

4.0.2 (2014-05-28)

  • 将github.com:UPCnet/maxclient的develop分支合并到develop [Carles Bruguera]

  • 保存最后响应状态 [Carles Bruguera]

  • 配置Max实例以在异常上记录跟踪信息 [Carles Bruguera]

4.0.1 (2014-05-07)

  • 更新资源 [Carles Bruguera]

  • 根据请求中文件的存在性识别文件系统资源 [Carles Bruguera]

  • 不要在尝试时返回 [Carles Bruguera]

  • 允许多次上传 upload_files 并指定 id [Carles Bruguera]

  • 在多部分有效负载中包含作为 json_data 的 json 数据 [Carles Bruguera]

  • 允许 ResourceItems 中的 ResourceItems [Carles Bruguera]

  • 不要将数据参数中的列表内容视为字典(…) [Carles Bruguera]

  • 更新默认值和资源列表 [Carles Bruguera]

4.0.0 (2014-04-15)

  • 修复错误的默认值 [Carles Bruguera]

  • 添加一些默认值 [Carles Bruguera]

  • 从最大值更新资源 [Carles Bruguera]

  • 在异常中包含 http 响应代码 [Carles Bruguera]

  • 添加发布对话消息的默认值 [Carles Bruguera]

  • 在 wsgi 客户端上使用应用包装器进行请求 [Carles Bruguera]

  • 添加 maxclient 的 wsgi 版本 [sunbit]

  • 如果未提供,则从 max 信息端点获取 oauth 服务器 [sunbit]

  • 添加许可证 [Victor Fernandez de Alba]

3.6.3 (2014-03-25)

  • 更新了使用情况,HEAD 返回 404 并返回它实际上没有实现,但实际上资源不存在。 [Victor Fernandez de Alba]

3.6.2 (2014-03-24)

  • 将常用功能分离到 BaseClient 中 [Carles Bruguera]

  • 上下文的默认值 [Victor Fernandez de Alba]

  • 更新资源 [Carles Bruguera]

  • 更新资源 [Carles Bruguera]

  • 从最大值更新资源 [Carles Bruguera]

  • 用户包装器 [Carles Bruguera]

  • 语法修复 [Carles Bruguera]

  • 根据文件对象上传文件,而不是内容 [Carles Bruguera]

  • 添加对文件上传的支持 [Carles Bruguera]

  • 添加基于字典的查询字符串的支持 [Carles Bruguera]

  • 记录变量传递语法 [Carles Bruguera]

  • 将辅助方法移动到 utils.py [Carles Bruguera]

  • 将 key.subkey 和 key_subkey 字典键展开为嵌套字典 [Carles Bruguera]

  • 使字典更新递归 [Carles Bruguera]

  • 添加默认定义系统 [Carles Bruguera]

  • 添加用于原始请求的调试方法 [Carles Bruguera]

  • 将非散列变量 {hash} 包装成散列 [Carles Bruguera]

  • 错别字 [Carles Bruguera]

  • 文档 [Carles Bruguera]

  • 捕获坏网关错误 [Carles Bruguera]

  • 更新资源定义 [Carles Bruguera]

  • 通用 rest-like maxclient 的第一个版本 [Carles Bruguera]

  • 添加 getUser 端点包装器 [Carles Bruguera]

  • 更好的密码错误 [Carles Bruguera]

3.6.1 (2014-02-24)

  • 添加两端包装器,grant 和 revoke [Victor Fernandez de Alba]

  • 添加安全 grant 角色包装器 [Victor Fernandez de Alba]

3.6 (2014-01-20)

  • 添加 get_context、grant permission、revoke permission [Victor Fernandez de Alba]

3.5.3 (2013-10-29)

  • 管理上下文标签的方法 [Carles Bruguera]

3.5.2 (2013-10-08)

  • 修复当 max 返回 [] 时返回 None 的错误 [Carles Bruguera]

3.5.1 (2013-10-03)

  • 添加上下文的模运算 [Carles Bruguera]

3.5 (2013-09-13)

  • 更新 Manifest [Victor Fernandez de Alba]

  • 为 conversation tokens 端点创建新的包装器 [Victor Fernandez de Alba]

  • 添加将活动作为上下文端点的包装器 [Victor Fernandez de Alba]

  • 添加识别当前演员的新方法 [Victor Fernandez de Alba]

  • 更新 maxclient 的敏感默认值 [Victor Fernandez de Alba]

3.4.1 (2013-08-02)

  • 添加上传用户头像的包装器 [Victor Fernandez de Alba]

3.4 (2013-07-25)

  • 添加更详细的错误 [Victor Fernandez de Alba]

  • 更新次要版本以匹配 MAX 次要版本 [Victor Fernandez de Alba]

3.3.3 (2013-07-10)

  • 修复后来添加的端点,并更好地处理删除操作 [Victor Fernandez de Alba]

  • 合并分支 ‘master’ of github.com:UPCnet/maxclient [Victor Fernandez de Alba]

  • 添加新的端点包装器 [Victor Fernandez de Alba]

  • 更好地传播发生的事情的信息 [Victor Fernandez de Alba]

3.3.2 (2013-07-01)

  • 添加返回给定上下文的订阅者的端点包装器

  • 添加取消用户上下文的订阅的端点包装器

3.3.1 (2013-06-04)

  • 添加回退以与 osiris oauth 服务器和旧服务器一起工作

3.3 (2013-06-04)

  • 更新到 3.3 MAX

3.0 (2013-04-15)

  • 更新到最新实现

1.0 (未发布)

  • 初始版本

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

maxclient-5.1.tar.gz (23.9 kB 查看哈希值)

上传时间

由以下支持