in apisix/runner/http/request.py [0:0]
def __init(self) -> None:
"""
init request handler
:return:
"""
if self.r.request.ty == runner_utils.RPC_HTTP_REQ_CALL:
req = HCReq.Req.GetRootAsReq(self.r.request.data)
# fetch request id
self.set_id(req.Id())
# fetch request conf token
self.set_conf_token(req.ConfToken())
# fetch request method
self.set_method(runner_utils.get_method_name_by_code(req.Method()))
# fetch request remote_addr
ip_list = runner_utils.parse_list_vector(req, runner_utils.VECTOR_TYPE_SOURCE_IP, True)
if len(ip_list) == 16:
self.set_remote_addr(IPv6Address(bytes(ip_list)).exploded)
else:
self.set_remote_addr(IPv4Address(bytes(ip_list)).exploded)
# fetch request uri
self.set_uri(req.Path().decode())
# fetch request headers
hdr_dict = runner_utils.parse_dict_vector(req, runner_utils.VECTOR_TYPE_HEADER)
self.set_headers(hdr_dict)
# fetch request args
arg_dict = runner_utils.parse_dict_vector(req, runner_utils.VECTOR_TYPE_QUERY)
self.set_args(arg_dict)
if self.r.request.ty == runner_utils.RPC_PREPARE_CONF:
req = PCReq.Req.GetRootAsReq(self.r.request.data)
for i in range(req.ConfLength()):
# fetch request config
name = req.Conf(i).Name().decode()
config = req.Conf(i).Value().decode()
self.set_config(name, config)