Skip to content

Commit

Permalink
Call urllib.parse less frequently
Browse files Browse the repository at this point in the history
  • Loading branch information
mbrunthaler authored and jairhenrique committed Jan 4, 2025
1 parent 965f365 commit ac230b7
Showing 1 changed file with 15 additions and 7 deletions.
22 changes: 15 additions & 7 deletions vcr/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,15 @@ def __init__(self, method, uri, body, headers):
self.headers = headers
log.debug("Invoking Request %s", self.uri)

@property
def uri(self):
return self._uri

@uri.setter
def uri(self, uri):
self._uri = uri
self.parsed_uri = urlparse(uri)

@property
def headers(self):
return self._headers
Expand Down Expand Up @@ -61,30 +70,29 @@ def add_header(self, key, value):

@property
def scheme(self):
return urlparse(self.uri).scheme
return self.parsed_uri.scheme

@property
def host(self):
return urlparse(self.uri).hostname
return self.parsed_uri.hostname

@property
def port(self):
parse_uri = urlparse(self.uri)
port = parse_uri.port
port = self.parsed_uri.port
if port is None:
try:
port = {"https": 443, "http": 80}[parse_uri.scheme]
port = {"https": 443, "http": 80}[self.parsed_uri.scheme]
except KeyError:
pass
return port

@property
def path(self):
return urlparse(self.uri).path
return self.parsed_uri.path

@property
def query(self):
q = urlparse(self.uri).query
q = self.parsed_uri.query
return sorted(parse_qsl(q))

# alias for backwards compatibility
Expand Down

0 comments on commit ac230b7

Please sign in to comment.