def info_data(environ, **params): method = environ['REQUEST_METHOD'] headers = getheaders(environ) args = {} if method in ENCODE_URL_METHODS: qs = environ.get('QUERY_STRING',{}) if qs: args = parse_qs(qs) else: post, files = parse_form_data(environ) args = dict(post) data = {'method': method, 'headers': headers, 'args': args} data.update(params) return jsonbytes(data)
def post_request(self, call, response): if response.status_code == 302 and call.name == 'authorization': url = urlparse(response.headers['location']) query = parse_qs(url.query) cont = query.get('cont') if cont: return self.request(call, cont[0], chain_to_response=response) else: state = query.get('state') #if state != response.request.data['state']: # raise PermissionDenied('state mismatch') code = url.query['code'][0] return self.token(code=code, chain_to_response=response) return response