Пример #1
0
        def do_extract_only_archive(user, coll, rec, wb_url, archive):
            request.path_shift(4)

            return self.handle_routing(wb_url, user, coll, rec, type='extract',
                                       sources=archive,
                                       inv_sources='*',
                                       redir_route='extract_only:' + archive)
Пример #2
0
        def do_extract_all(user, coll, rec, wb_url):
            request.path_shift(4)

            return self.handle_routing(wb_url, user, coll, rec, type='extract',
                                       sources='*',
                                       inv_sources='*',
                                       redir_route='extract')
Пример #3
0
 def do_replay_coll(user, coll, wb_url):
     request.path_shift(2)
     # BEGIN PERMA CUSTOMIZATION
     # see self.refuse_playback for more information
     if any(url in wb_url for url in self.refuse_playback):
         self._raise_error(404, 'no_such_recording')
     # END PERMA CUSTOMIZATION
     return self.handle_routing(wb_url, user, coll, '*', type='replay-coll')
Пример #4
0
 def test_shift(s, p, c):
     request.bind({"SCRIPT_NAME": s, "PATH_INFO": p})
     request.path_shift(c)
     return [request["SCRIPT_NAME"], request.path]
        def do_replay_rec(user, coll, list_id, bk_id, wb_url):
            request.path_shift(5)

            return self.handle_routing(wb_url, user, coll, '*', type='replay-coll')
Пример #6
0
        def logged_in_patch(user, coll, rec, wb_url):
            request.path_shift(4)

            return self.handle_routing(wb_url, user, coll, rec, type='patch')
Пример #7
0
        def live(wb_url):
            request.path_shift(1)

            return self.handle_routing(wb_url, user='******', coll='temp', rec='', type='live')
Пример #8
0
        def do_replay_rec(user, coll, rec, wb_url):
            request.path_shift(4)

            return self.handle_routing(wb_url, user, coll, rec, type='replay')
Пример #9
0
        def do_record(user, coll, rec, wb_url):
            request.path_shift(4)

            return self.handle_routing(wb_url, user, coll, rec, type='record', redir_route='record')
Пример #10
0
        def live(wb_url):
            request.path_shift(1)

            return self.handle_routing(wb_url, user='******', coll='temp', rec='', type='live')
Пример #11
0
        def do_replay_rec(user, coll, rec, wb_url):
            request.path_shift(4)

            return self.handle_routing(wb_url, user, coll, rec, type='replay')
Пример #12
0
        def do_replay_rec(user, coll, list_id, bk_id, wb_url):
            request.path_shift(5)

            return self.handle_routing(wb_url, user, coll, '*', type='replay-coll')
Пример #13
0
        def do_patch(user, coll, rec, wb_url):
            request.path_shift(4)

            return self.handle_routing(wb_url, user, coll, rec, type='patch', redir_route='patch')
Пример #14
0
        def do_record(user, coll, rec, wb_url):
            request.path_shift(4)

            return self.handle_routing(wb_url, user, coll, rec, type='record', redir_route='record')
Пример #15
0
 def embed_replay(user, coll, wb_url):
     request.path_shift(3)
     #return self.do_replay_coll_or_rec(user, coll, wb_url, is_embed=True,
     #                                  is_display=True)
     return self.handle_routing(wb_url, user, coll, '*', type='replay-coll',
                                is_embed=True, is_display=True)
Пример #16
0
 def test_shift(s, p, c):
     request = BaseRequest({'SCRIPT_NAME': s, 'PATH_INFO': p})
     request.path_shift(c)
     return [request['SCRIPT_NAME'], request.path]
 def test_shift(s, p, c):
     request = BaseRequest({'SCRIPT_NAME': s, 'PATH_INFO': p})
     request.path_shift(c)
     return [request['SCRIPT_NAME'], request.path]
Пример #18
0
    def call_pywb(self, user=None, coll=None, state=None, anon=False):
        if anon:
            wrsesh = request.environ['webrec.session']
            if state != 'live' and wrsesh.curr_user:
                wrsesh.flash_message('You are logged in. Please select a collection to record or browse', 'info')
                redirect('/' + wrsesh.curr_user)
                return

            user = wrsesh.anon_user
            coll = '@anon'
            path = '@anon'
            coll_path = 'replay'
            curr_path = state
            sesh_id = self.path_parser.get_coll_path(user, coll)

            if state == 'record' or state == 'patch':
                if not wrsesh.is_anon():
                    self.redir_no_cookie()

                user = self.manager.get_anon_user()

                if not self.manager.has_space(user):
                    request.environ['webrec.no_space'] = True

            elif state == 'replay':
                request.path_shift(1)

        elif user and coll:
            request.path_shift(self.path_parser.get_path_shift())

            sesh_id = self.path_parser.get_coll_path(user, coll)
            path = sesh_id
            curr_path = path
            coll_path = path

            if state != 'replay':
                curr_path += '/' + state


        if anon or (user and coll):
            output_dir = self.path_parser.get_archive_dir(user, coll)
            name_prefix = self.path_parser.get_name_prefix(user, coll)

            request.environ['w_output_dir'] = output_dir
            request.environ['w_sesh_id'] = sesh_id
            request.environ['w_path'] = path
            request.environ['w_nameprefix'] = name_prefix
            request.environ['w_manager'] = self.manager
            request.environ['w_user_id'] = 'u:' + user

            params = request.environ['pywb.template_params']
            params['state'] = state
            params['user'] = user
            params['coll'] = coll
            params['path'] = coll_path
            params['curr_path'] = curr_path


        try:
            resp = self.pywb(request.environ)
        except WbException as wbe:
            status = int(wbe.status().split(' ', 1)[0])
            raise HTTPError(status=status, body=str(wbe))

        if not resp:
            raise HTTPError(status=404, body='No Response Found')

        resp = HTTPResponse(body=resp.body,
                            status=resp.status_headers.statusline,
                            headers=resp.status_headers.headers)
        return resp
Пример #19
0
 def embed_replay(user, coll, wb_url):
     request.path_shift(3)
     #return self.do_replay_coll_or_rec(user, coll, wb_url, is_embed=True,
     #                                  is_display=True)
     return self.handle_routing(wb_url, user, coll, '*', type='replay-coll',
                                is_embed=True, is_display=True)
Пример #20
0
    def call_pywb(self, user=None, coll=None, state=None, anon=False):
        if anon:
            wrsesh = request.environ.get('webrec.session')
            if state != 'live' and wrsesh.curr_user:
                wrsesh.flash_message('You are logged in. Please select a collection to record or browse', 'info')
                redirect('/' + wrsesh.curr_user)
                return

            user = wrsesh.anon_user
            coll = '@anon'
            path = '@anon'
            coll_path = 'replay'
            curr_path = state
            sesh_id = self.path_parser.get_coll_path(user, coll)

            if state == 'record' or state == 'patch':
                if not wrsesh.is_anon():
                    wrsesh.set_anon()
                    self.manager.init_anon_user(user)
                elif not self.manager.has_space(user):
                    request.environ['webrec.no_space'] = True

            elif state == 'replay':
                request.path_shift(1)

        elif user and coll:
            request.path_shift(self.path_parser.get_path_shift())

            sesh_id = self.path_parser.get_coll_path(user, coll)
            path = sesh_id
            curr_path = path
            coll_path = path

            if state != 'replay':
                curr_path += '/' + state


        if anon or (user and coll):
            output_dir = self.path_parser.get_archive_dir(user, coll)
            name_prefix = self.path_parser.get_name_prefix(user, coll)

            request.environ['w_output_dir'] = output_dir
            request.environ['w_sesh_id'] = sesh_id
            request.environ['w_path'] = path
            request.environ['w_nameprefix'] = name_prefix
            request.environ['w_manager'] = self.manager
            request.environ['w_user_id'] = 'u:' + user

            params = request.environ['pywb.template_params']
            params['state'] = state
            params['user'] = user
            params['coll'] = coll
            params['path'] = coll_path
            params['curr_path'] = curr_path


        try:
            resp = self.pywb(request.environ)
        except WbException as wbe:
            status = int(wbe.status().split(' ', 1)[0])
            raise HTTPError(status=status, body=str(wbe))

        if not resp:
            raise HTTPError(status=404, body='No Response Found')

        resp = HTTPResponse(body=resp.body,
                            status=resp.status_headers.statusline,
                            headers=resp.status_headers.headers)
        return resp
Пример #21
0
        def do_patch(user, coll, rec, wb_url):
            request.path_shift(4)

            return self.handle_routing(wb_url, user, coll, rec, type='patch', redir_route='patch')
Пример #22
0
 def embed_replay(user, coll, wb_url):
     request.path_shift(1)
     return self.do_replay_coll_or_rec(user,
                                       coll,
                                       wb_url,
                                       is_embed=True)
Пример #23
0
        def do_replay_coll(user, coll, wb_url):
            request.path_shift(2)

            return self.handle_routing(wb_url, user, coll, '*', type='replay-coll')
Пример #24
0
        def do_replay_coll(user, coll, wb_url):
            request.path_shift(2)

            return self.handle_routing(wb_url, user, coll, '*', type='replay-coll')