def list_reqs(line): """ List the most recent in-context requests. By default shows the most recent 25 Usage: list [a|num] If `a` is given, all the in-context requests are shown. If a number is given, that many requests will be shown. """ args = shlex.split(line) if len(args) > 0: if args[0][0].lower() == 'a': print_count = -1 else: try: print_count = int(args[0]) except: print "Please enter a valid argument for list" return else: print_count = 25 rows = [] ids = yield main_context_ids(print_count) for i in ids: req = yield Request.load_request(i) rows.append(get_req_data_row(req)) print_request_rows(rows)
def untag(line): """ Remove a tag from requests Usage: untag <tag> <request ids> You can provide as many request ids as you want and the tag will be removed from all of them. If no ids are given, the tag will be removed from all in-context requests. """ args = shlex.split(line) if len(args) == 0: raise PappyException("Tag and request ids are required") tag = args[0] ids = [] if len(args) > 1: reqids = yield load_reqlist(args[1], False, ids_only=True) print 'Removing tag %s from %s' % (tag, ', '.join(reqids)) else: print "Removing tag %s from all in-context requests" % tag reqids = yield main_context_ids() for reqid in reqids: req = yield Request.load_request(reqid) if tag in req.tags: req.tags.discard(tag) if req.saved: yield req.async_save() if ids: print 'Tag %s removed from %s' % (tag, ', '.join(ids))
def tag(line): """ Add a tag to requests. Usage: tag <tag> [request ids] You can tag as many requests as you want at the same time. If no ids are given, the tag will be applied to all in-context requests. """ args = shlex.split(line) if len(args) == 0: raise PappyException('Tag name is required') tag = args[0] if len(args) > 1: reqids = yield load_reqlist(args[1], False, ids_only=True) print 'Tagging %s with %s' % (', '.join(reqids), tag) else: print "Tagging all in-context requests with %s" % tag reqids = yield main_context_ids() for reqid in reqids: req = yield Request.load_request(reqid) if tag not in req.tags: req.tags.add(tag) if req.saved: yield req.async_save() else: print 'Request %s already has tag %s' % (req.reqid, tag)
def site_map(line): """ Print the site map. Only includes requests in the current context. Usage: site_map """ ids = yield main_context_ids() paths_set = set() for reqid in ids: req = yield Request.load_request(reqid) if req.response and req.response.response_code != 404: paths_set.add(req.path_tuple) tree = sorted(list(paths_set)) print_tree(tree)
def site_map(line): """ Print the site map. Only includes requests in the current context. Usage: site_map """ args = shlex.split(line) if len(args) > 0 and args[0] == 'p': paths = True else: paths = False ids = yield main_context_ids() paths_set = set() for reqid in ids: req = yield Request.load_request(reqid) if req.response and req.response.response_code != 404: paths_set.add(req.path_tuple) tree = sorted(list(paths_set)) if paths: for p in tree: print ('/'.join(list(p))) else: print_tree(tree)
def site_map(line): """ Print the site map. Only includes requests in the current context. Usage: site_map """ args = shlex.split(line) if len(args) > 0 and args[0] == 'p': paths = True else: paths = False ids = yield main_context_ids() paths_set = set() for reqid in ids: req = yield Request.load_request(reqid) if req.response and req.response.response_code != 404: paths_set.add(req.path_tuple) tree = sorted(list(paths_set)) if paths: for p in tree: print('/'.join(list(p))) else: print_tree(tree)
def get_param_info(line): args = shlex.split(line) if args and args[0] == 'ct': contains = True args = args[1:] else: contains = False if args: params = tuple(args) else: params = None def check_key(k, params, contains): if contains: for p in params: if p.lower() in k.lower(): return True else: if params is None or k in params: return True return False found_params = {} ids = yield main_context_ids() for i in ids: req = yield Request.load_request(i) for k, v in req.url_params.all_pairs(): if check_key(k, params, contains): add_param(found_params, 'Url Parameter', k, v, req.reqid) for k, v in req.post_params.all_pairs(): if check_key(k, params, contains): add_param(found_params, 'POST Parameter', k, v, req.reqid) for k, v in req.cookies.all_pairs(): if check_key(k, params, contains): add_param(found_params, 'Cookie', k, v, req.reqid) print_param_info(found_params)