基于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做 无权限安装到自定义路径中。

要求

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

推荐PyPI第三方库


热门话题
使用jaxrpc的Java eclipse WebService客户端   java编程方式在对象上写入名称   java Spring批处理:重试后跳过   java Android错误:错误:任务执行失败:应用程序:transformClassesWithDexForDebug'   带有清单文件nullPointerException的java Android元数据   spring Java Quartz调度作业停止运行   JavaMockito:如何在不调用实际方法的情况下,模拟带有参数和无效返回类型的静态方法?   java Tomcat连接池问题无法在关闭的连接上调用方法   java如何交换列表中的项目?   java如何停止线程并通过Toast在线程中正确显示文本?   java为什么连续写入OutputStream时偏移量0不会导致重复字节?   java我无法生成头文件   不兼容的返回类型错误java   修改值后键值对的java Jolt转换规范   java有自动更新Javadoc的工具吗?   java线程如何在ints自身实例类中共享变量   java继承一个非gwt模块   java Hibernate xml配置   使用netty4异步调用的java链接HTTP请求响应