访问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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9c847199f9d0b669b73851b842b986d15cd8ebd0c0d4fb7fc442893c96449e15 |
|
MD5 | 3b46297066ce687d2ea6bfb84bfb91d6 |
|
BLAKE2b-256 | 2df7667655d6d325f2ee9b19834c96fb74d6e5ad8827b2d1ecbd28d8a43e81b1 |