基于Twisted的Box (box.net) API v2.0的异步接口
项目描述
txboxdotnet
Twisted-based python async interface for Box (box.net) API (version 2.0).
API认证文档: http://developers.box.com/oauth/
使用示例
以下脚本将打印box.net根目录的列表,上传“test.txt”文件,尝试在更新后的目录列表中找到它,然后删除它。
from twisted.internet import defer, reactor from txboxdotnet.api_v2 import txBoxAPI api = txBoxAPI( client_id='...', client_secret='...', ... ) if not api.auth_code: print '\n'.join([ 'Visit the following URL in any web browser (firefox, chrome, safari, etc),', ' authorize there, confirm access permissions, and paste URL of an empty page', ' (starting with "https://success.box.com/") you will get', ' redirected to into "auth_code" value in "config" dict above.\n', 'URL to visit:\n {}'.format(api.auth_user_get_url()) ]) exit() if re.search(r'^https?://', api.auth_code): api.auth_user_process_url(api.auth_code) @defer.inlineCallbacks def do_stuff(): # Print root directory listing print list(e['name'] for e in (yield api.listdir())) # Upload "test.txt" file from local current directory file_info = yield api.put('test.txt') # Find just-uploaded "test.txt" file by name file_id = yield api.resolve_path('test.txt') # Check that id matches uploaded file assert file_info['id'] == file_id # Remove the file yield api.delete(file_id) do_stuff().addBoth(lambda ignored: reactor.stop()) reactor.run()
请注意,传递给上面txBoxAPI类初始化的参数应包含认证数据,这些数据可以从“client_id”和“client_secret”中提取,这些是在box.net上应用注册后提供的。
服务(至少现在)有一个相当令人讨厌的要求,即它提供的“auth_code”在授权API访问请求后只有效30秒。有关此过程的更多信息,请参阅API认证文档。
有关更完整的示例(包括oauth2内容),请参阅if __name__ == '__main__':之后的api_v2.py代码(将来需要更好的示例,欢迎提交补丁!)。
安装
这是一个针对Python 2.7的常规包(不是3.X)。
使用pip是最佳方式
% pip install txboxdotnet
如果您没有,请使用
% easy_install pip % pip install txboxdotnet
或者(另请参阅)
% curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python % pip install txboxdotnet
或者,如果您绝对必须
% easy_install txboxdotnet
但是,您真的不应该这样做。
当前git版本可以按以下方式安装
% pip install 'git+https://github.com/mk-fg/txboxdotnet.git#egg=txboxdotnet'
请注意,要在系统范围内的PATH和site-packages中安装软件,通常需要提升权限。使用“install –user”,~/.pydistutils.cfg或virtualenv在自定义路径中进行无权限安装。
要求
Twisted(核心,网络,至少12.2.0)
实现的方法
实现API方法包装器的矩阵(与文档中的顺序相同)
文件夹
[x] 列:listdir
[x] 创建:mkdir
[x] 获取信息:info_folder
[ ] 复制
[x] 删除:delete_folder
[ ] 更新信息
[ ] 创建共享链接
[ ] 查看讨论
[ ] 查看合作
[ ] 从回收站列出
[ ] 从回收站获取信息
[ ] 从回收站恢复
[ ] 永久删除
文件
[x] 上传:put
[x] 下载:get
[x] 获取信息:info_file
[x] 覆盖上传:put
[ ] 重命名上传
[ ] 查看版本
[ ] 更新信息
[x] 删除:delete_file
[ ] 复制
[ ] 创建共享链接
[ ] 查看评论
[ ] 获取缩略图
[ ] 从回收站获取
[ ] 从回收站恢复
[ ] 永久删除
评论
讨论
合作
用户
[x] 当前用户信息:info_user
[ ] 所有其他功能 ;)
搜索
共享项目
事件
请注意,这些包装器通常非常简单,只是将Python方法参数转换为适当的API密钥,通常看起来像这样
def info_file(self, file_id): return self(join('files', file_id))
任何缺失的方法也可以通过像上面一样调用API对象来替换,传递所有适当的(根据文档)参数。
我的用途非常有限 - 我只使用服务进行文件存储 - 因此,除非有人有兴趣进行修补,否则不太可能在这里实现缺失的共享/合作包装器。
项目详情
txboxdotnet-15.5.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 2bb00c97ae7cb2dcbb19ed2115f21e45cf49071a8c3018b94aca0d8d88a7050e |
|
MD5 | 7f34247e9ff866d01ba8ac7accbe5677 |
|
BLAKE2b-256 | 0fe528ba526bccc2de5bcc0ca82ab3ef146f4caa68b1d83ceb73d97db0f9dc83 |