[docs]asyncdefsend(self,request:HttpRequest,url:str)->Response:""" Send the HTTP request using the provided URL. :param request: The HttpRequest object to be sent. :param url: The URL to which the request is sent. :return: The HTTP response received. """request=self._build_request(request,url)returnawaitself.http_client.send(request)
def_get_default_user_agent(self)->str:""" Get the default user agent string. :return: The default user agent string. """try:returnf"harp/{__parsed_version__.major}.{__parsed_version__.minor}"exceptAttributeError:return"harp"def_get_updated_headers(self,request:HttpRequest,*,url:str)->list:""" Update the headers for the request. :param request: The HttpRequest object. :param url: The URL to which the request is sent. :return: A list of updated headers. """parsed_url=urlparse(url)request.headers["host"]=parsed_url.netlocifself.user_agent:request.headers["user-agent"]=self.user_agentreturnlist(request.headers.items())def_build_request(self,request:HttpRequest,url:str)->Request:""" Build the HTTP request. :param request: The HttpRequest object. :param url: The URL to which the request is sent. :return: The built HTTP request. """headers=self._get_updated_headers(request,url=url)remote_request=self.http_client.build_request(request.method,url,headers=headers,content=request.body,extensions={"harp":{**self.extensions}},)request.extensions["remote_method"]=remote_request.methodrequest.extensions["remote_url"]=str(remote_request.url)returnremote_request