def _challenge_tokens(self, tokens, affordances): tokens = tokens.unfrozen_copy() if 'realm' not in tokens: tokens['realm'] = iter(affordances.realms).next() if 'space_uris' not in tokens: space_locs = \ self.service\ .auth_spaces\ .locs(self.service.current_request.auth_space) tokens['space_uris'] = ' '.join(_percent_encode(loc.pattern) for loc in space_locs) tokens['server_nonce'] = self.new_server_nonce(tokens=tokens, affordances=affordances) if 'qop' not in tokens: if self.phases[0]\ ._affordances_require_qop_auth_int_output\ (upstream_affordances=affordances): tokens['qop'] = 'auth-int' elif self.phases[0]\ ._affordances_support_qop_auth_int_output\ (upstream_affordances=affordances): tokens['qop'] = 'auth, auth-int' else: tokens['qop'] = 'auth' if 'digest_algorithm' not in tokens: # TODO: support MD5-sess tokens['digest_algorithm'] = 'MD5' return tokens
def _echo_ordered_pathpartargs_path(self): return '&'.join(['echo_pathpartargs'] + ['{}={}'.format(name, _percent_encode(_json.dumps(value))) for name, value in self._echo_args_args.items()])
def _echo_variadic_pathargs_path(self): return '/'.join(['echo_variadic_pathargs'] + ['{}_{}'.format(name, _percent_encode(_json.dumps(value))) for name, value in self._echo_args_args.items()])
def _redirect_path(self): return 'response;loc={}'\ .format(_percent_encode(_json.dumps(self._redirect_loc), safe=''))