基于twisted的ubuntu one文件异步接口cloud rest api v1
txu1的Python项目详细描述
TXU1
Ubuntu One的基于twisted的异步接口 Files Cloud REST API v1。
在twisted和 oauth2(名称可能是 令人困惑-它实际上是OAuth1.0helper),不需要任何 特定于ubuntu的libs、守护进程或模块。
用法示例
请注意,电子邮件/密码凭据仅用于获取OAuth 1.0使用者/令牌(可通过ubuntu single sign on interface撤销)一次,请参见 docs 更多细节。
包含的“u1 cli”脚本也可以用来生成这些oauth 应用程序的凭据。
from twisted.internet import defer, reactor from txu1 import txU1, DoesNotExist @defer.inlineCallbacks def do_stuff(): api = txU1(debug_requests=True) try: api.auth_consumer, api.auth_token =\ (open(n).read().splitlines() for n in ['u1_consumer', 'u1_token']) except (OSError, IOError): print 'Getting new OAuth credentials' # Query credentials from terminal email = raw_input('U1 Email: ').strip() password = raw_input('U1 Password: ').strip() assert email and password, (email, password) auth = yield api.auth_create_token(email, password) open('u1_consumer', 'w').write('{}\n{}\n'.format(*api.auth_consumer)) open('u1_token', 'w').write('{}\n{}\n'.format(*api.auth_token)) print 'Auth data acquired: {}'.format(auth) print 'Storage info: {}'.format((yield api.info_storage())) print 'Public files: {}'.format((yield api.info_public_files())) vol_list = yield api.volume_info(type_filter='udf') vol_count = len(vol_list) print 'UDF volumes: {}'.format(vol_list) try: vol_info = yield api.volume_info('~/test') except DoesNotExist: vol_info = yield api.volume_create('~/test') vol_count += 1 print 'Using volume: {}'.format(vol_info) if vols_count > 1: api.default_volume = '~/test' try: print 'dir info: {}'.format((yield api.node_info('/a/b/c', children=True))) except DoesNotExist: print 'mkdir: {}'.format((yield api.node_mkdir('/a/b/c'))) contents = 'somecontents' print 'put: {}'.format( (yield api.file_put_into('/a/b/c', name='test_file', data=contents)) ) print 'put_magic: {}'.format( (yield api.file_put_magic('/a/b/c/test_file2', data=contents)) ) print 'get: {}'.format((yield api.file_get('/a/b/c/test_file'))) print "Hey! I'm running some DELETE operations, don't mind me..." yield api.node_delete('/a/b/c/test_file2') yield api.node_delete('/a/b/c/test_file') yield api.node_delete('/a/b/c') yield api.volume_delete('~/test') print 'Done' do_stuff().addBoth(lambda ignored: reactor.stop()) reactor.run()
更全面的文件总是欢迎!
安装
它是Python2.7(而不是3.x)的常规包。
使用pip是最好的方法:
% pip install txu1
如果没有,请使用:
% easy_install pip % pip install txu1
或者(see also):
% curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python % pip install txu1
或者,如果您必须这样做:
% easy_install txu1
但是,你真的不应该这么做。
当前的git版本可以如下安装:
% pip install 'git+https://github.com/mk-fg/txu1.git#egg=txu1'
注意,要在系统范围的路径和站点包中安装内容, 通常需要提升权限。使用“install–user”, ~/.pydistutils.cfg 或者virtualenv做 无权限安装到自定义路径中。
要求
- Python 2.7 (not 3.X)
- Twisted(核心,网络,至少12.2.0)
- oauth2