def do_response(self, response_args: Optional[dict] = None, request: Optional[Union[Message, dict]] = None, error: Optional[str] = "", **kwargs) -> dict: """ :param response_args: Information to use when constructing the response :param request: The original request :param error: Possible error encountered while processing the request """ do_placement = True content_type = "text/html" _resp = {} _response_placement = None if response_args is None: response_args = {} LOGGER.debug("do_response kwargs: %s", kwargs) resp = None if error: _response = ResponseMessage(error=error) try: _response["error_description"] = kwargs["error_description"] except KeyError: pass elif "response_msg" in kwargs: resp = kwargs["response_msg"] _response_placement = kwargs.get("response_placement") do_placement = False _response = "" content_type = kwargs.get("content_type") if content_type is None: if self.response_format == "json": content_type = "application/json" elif self.response_format in ["jws", "jwe", "jose"]: content_type = "application/jose" else: content_type = "application/x-www-form-urlencoded" else: _response = self.response_info(response_args, request, **kwargs) if do_placement: content_type = kwargs.get("content_type") if content_type is None: if self.response_placement == "body": if self.response_format == "json": content_type = "application/json; charset=utf-8" resp = _response.to_json() elif self.response_format in ["jws", "jwe", "jose"]: content_type = "application/jose; charset=utf-8" resp = _response else: content_type = "application/x-www-form-urlencoded" resp = _response.to_urlencoded() elif self.response_placement == "url": content_type = "application/x-www-form-urlencoded" fragment_enc = kwargs.get("fragment_enc") if not fragment_enc: _ret_type = kwargs.get("return_type") if _ret_type: fragment_enc = fragment_encoding(_ret_type) else: fragment_enc = False if fragment_enc: resp = _response.request(kwargs["return_uri"], True) else: resp = _response.request(kwargs["return_uri"]) else: raise ValueError("Don't know where that is: '{}".format( self.response_placement)) if content_type: try: http_headers = set_content_type(kwargs["http_headers"], content_type) except KeyError: http_headers = [("Content-type", content_type)] else: try: http_headers = kwargs["http_headers"] except KeyError: http_headers = [] if _response_placement: _resp["response_placement"] = _response_placement http_headers.extend(OAUTH2_NOCACHE_HEADERS) _resp.update({"response": resp, "http_headers": http_headers}) try: _resp["cookie"] = kwargs["cookie"] except KeyError: pass return _resp
def do_response(self, response_args=None, request=None, error="", **kwargs): """ """ do_placement = True content_type = "text/html" _resp = {} _response_placement = None if response_args is None: response_args = {} LOGGER.debug("do_response kwargs: %s", kwargs) resp = None if error: _response = ResponseMessage(error=error) try: _response["error_description"] = kwargs["error_description"] except KeyError: pass elif "response_msg" in kwargs: resp = kwargs["response_msg"] _response_placement = kwargs.get('response_placement') do_placement = False _response = "" content_type = kwargs.get('content_type') if content_type is None: if self.response_format == "json": content_type = "application/json" elif self.request_format in ["jws", "jwe", "jose"]: content_type = "application/jose" else: content_type = "application/x-www-form-urlencoded" else: _response = self.response_info(response_args, request, **kwargs) if do_placement: content_type = kwargs.get('content_type') if content_type is None: if self.response_placement == "body": if self.response_format == "json": content_type = "application/json" resp = _response.to_json() elif self.request_format in ["jws", "jwe", "jose"]: content_type = "application/jose" resp = _response else: content_type = "application/x-www-form-urlencoded" resp = _response.to_urlencoded() elif self.response_placement == "url": # content_type = 'application/x-www-form-urlencoded' content_type = "" try: fragment_enc = kwargs["fragment_enc"] except KeyError: _ret_type = kwargs.get("return_type") if _ret_type: fragment_enc = fragment_encoding(_ret_type) else: fragment_enc = False if fragment_enc: resp = _response.request(kwargs["return_uri"], True) else: resp = _response.request(kwargs["return_uri"]) else: raise ValueError("Don't know where that is: '{}".format( self.response_placement)) if content_type: try: http_headers = set_content_type(kwargs["http_headers"], content_type) except KeyError: http_headers = [("Content-type", content_type)] else: try: http_headers = kwargs["http_headers"] except KeyError: http_headers = [] if _response_placement: _resp["response_placement"] = _response_placement http_headers.extend(OAUTH2_NOCACHE_HEADERS) _resp.update({"response": resp, "http_headers": http_headers}) try: _resp["cookie"] = kwargs["cookie"] except KeyError: pass return _resp
def do_response(self, response_args=None, request=None, error='', **kwargs): do_placement = True content_type = 'text/html' _resp = {} if response_args is None: response_args = {} if error: _response = ResponseMessage(error=error) try: _response['error_description'] = kwargs['error_description'] except KeyError: pass elif 'response_msg' in kwargs: resp = kwargs['response_msg'] do_placement = False _response = '' _resp['response_placement'] = 'body' else: _response = self.response_info(response_args, request, **kwargs) resp = None if do_placement: if self.response_placement == 'body': if self.response_format == 'json': content_type = 'application/json' resp = _response.to_json() elif self.request_format in ['jws', 'jwe', 'jose']: content_type = 'application/jose' resp = _response else: content_type = 'application/x-www-form-urlencoded' resp = _response.to_urlencoded() elif self.response_placement == 'url': # content_type = 'application/x-www-form-urlencoded' content_type = '' try: fragment_enc = kwargs['fragment_enc'] except KeyError: fragment_enc = fragment_encoding(kwargs['return_type']) if fragment_enc: resp = _response.request(kwargs['return_uri'], True) else: resp = _response.request(kwargs['return_uri']) else: raise ValueError("Don't know where that is: '{}".format( self.response_placement)) if content_type: try: http_headers = set_content_type(kwargs['http_headers'], content_type) except KeyError: http_headers = [('Content-type', content_type)] else: try: http_headers = kwargs['http_headers'] except KeyError: http_headers = [] http_headers.extend(OAUTH2_NOCACHE_HEADERS) _resp.update({'response': resp, 'http_headers': http_headers}) try: _resp['cookie'] = kwargs['cookie'] except KeyError: pass return _resp