コード例 #1
0
ファイル: pyrotorrent.py プロジェクト: meridion/pyroTorrent
def handle_api(env):
    """
    """
    if str(env['REQUEST_METHOD']) != 'POST':
        return None

    if not loggedin_and_require(env):
        return ['403 Forbidden', [('Content-Type', 'application/json')],
                json.dumps(None, indent=' ' * 4)]

    # Get JSON request via POST data
    data = read_post_data(env)
    request = urllib.unquote_plus(data['request'].value)

    print 'Request:', repr(request)

    d = json.loads(request)
    r = []

    for x in d:
        if 'type' in x:
            print 'Method:', x['type']
            r.append(env, handle_api_method(x['type'], x))

    return ['200 OK', [('Content-Type', 'application/json')], \
            json.dumps(r, indent=' ' * 4)]
コード例 #2
0
ファイル: pyrotorrent.py プロジェクト: meridion/pyroTorrent
def main_view_page(env, view):
    """
    Main page. Shows all torrents, per target.
    Does two XMLRPC calls per target.
    """
    if not loggedin_and_require(env):
        return handle_login(env)

    rtorrent_data = fetch_global_info()

    user = fetch_user(env)

#    if view not in rtorrent_data.get_view_list:
#        return error_page(env, 'Invalid view: %s' % view)

    torrents = {}
    for target in targets:
        if user == None and USE_AUTH:
            continue
        if user and (target['name'] not in user.targets):
            continue

        try:
            t = TorrentRequester(target, view)

            t.get_name().get_download_rate().get_upload_rate() \
                    .is_complete().get_size_bytes().get_download_total().get_hash()

            torrents[target['name']] = t.all()

        except InvalidTorrentException, e:
            return error_page(env, str(e))
コード例 #3
0
ファイル: decorator.py プロジェクト: meridion/pyroTorrent
        def webtool_func(env, *args, **key_args):
            """
            webtool internal function wrapper
            """

            # Force a login if necessary
            if require_login:
                if not loggedin_and_require(env):
                    return handle_login(env)

            # Lookup user
            try:
                user_name = env['beaker.session']['user_name']
                user = lookup_user(user_name)
            except KeyError, e:
                user = None
コード例 #4
0
ファイル: pyrotorrent.py プロジェクト: meridion/pyroTorrent
def add_torrent_page(env, target):
    """
    Page for adding torrents.
    Works: Adding a correct torrent (URL only)
    What doesn't work:
        Error handling,
        Uploading .torrent files
        Option to add and start, or not start on add
    """
    if not loggedin_and_require(env):
        return handle_login(env)

    target = lookup_target(target)
    if target is None:
        return None # 404

    try:
        user_name = env['beaker.session']['user_name']
        user = lookup_user(user_name)
    except KeyError, e:
        user = None
コード例 #5
0
        def pyroview_func(*args, **key_args):
            """
            pyroview internal function wrapper
            """

            print "pyroview_func"
            print args, key_args

            # Force a login if necessary
            if require_login:
                if not loggedin_and_require():
                    # If you wonder why the definition of the
                    # following function is nowhere to be found, check
                    # '/pyrotorrent.py'.
                    return handle_login()

            # Lookup user
            try:
                user_name = session['user_name']
                user = lookup_user(user_name)
            except KeyError, e:
                user = None
コード例 #6
0
ファイル: decorators.py プロジェクト: HetGroteBos/pyroTorrent
        def pyroview_func(*args, **key_args):
            """
            pyroview internal function wrapper
            """

            print "pyroview_func"
            print args, key_args

            # Force a login if necessary
            if require_login:
                if not loggedin_and_require():
                    # If you wonder why the definition of the
                    # following function is nowhere to be found, check
                    # '/pyrotorrent.py'.
                    return handle_login()

            # Lookup user
            try:
                user_name = session['user_name']
                user = lookup_user(user_name)
            except KeyError, e:
                user = None