models.py (httpie-3.0.0) | : | models.py (httpie-3.0.1) | ||
---|---|---|---|---|
from time import monotonic | ||||
import requests | import requests | |||
from enum import Enum, auto | from enum import Enum, auto | |||
from typing import Iterable, Union, NamedTuple | from typing import Iterable, Union, NamedTuple | |||
from urllib.parse import urlsplit | from urllib.parse import urlsplit | |||
from .cli.constants import ( | from .cli.constants import ( | |||
OUT_REQ_BODY, | OUT_REQ_BODY, | |||
OUT_REQ_HEAD, | OUT_REQ_HEAD, | |||
OUT_RESP_BODY, | OUT_RESP_BODY, | |||
OUT_RESP_HEAD, | OUT_RESP_HEAD, | |||
OUT_RESP_META | OUT_RESP_META | |||
) | ) | |||
from .compat import cached_property | from .compat import cached_property | |||
from .utils import split_cookies, parse_content_type_header | from .utils import split_cookies, parse_content_type_header | |||
ELAPSED_TIME_LABEL = 'Elapsed time' | ||||
class HTTPMessage: | class HTTPMessage: | |||
"""Abstract class for HTTP messages.""" | """Abstract class for HTTP messages.""" | |||
def __init__(self, orig): | def __init__(self, orig): | |||
self._orig = orig | self._orig = orig | |||
def iter_body(self, chunk_size: int) -> Iterable[bytes]: | def iter_body(self, chunk_size: int) -> Iterable[bytes]: | |||
"""Return an iterator over the body.""" | """Return an iterator over the body.""" | |||
raise NotImplementedError | raise NotImplementedError | |||
skipping to change at line 97 | skipping to change at line 101 | |||
f'Set-Cookie: {cookie}' | f'Set-Cookie: {cookie}' | |||
for header, value in original.headers.items() | for header, value in original.headers.items() | |||
for cookie in split_cookies(value) | for cookie in split_cookies(value) | |||
if header == 'Set-Cookie' | if header == 'Set-Cookie' | |||
) | ) | |||
return '\r\n'.join(headers) | return '\r\n'.join(headers) | |||
@property | @property | |||
def metadata(self) -> str: | def metadata(self) -> str: | |||
data = {} | data = {} | |||
data['Elapsed time'] = str(self._orig.elapsed.total_seconds()) + 's' | time_to_parse_headers = self._orig.elapsed.total_seconds() | |||
# noinspection PyProtectedMember | ||||
time_since_headers_parsed = monotonic() - self._orig._httpie_headers_par | ||||
sed_at | ||||
time_elapsed = time_to_parse_headers + time_since_headers_parsed | ||||
# data['Headers time'] = str(round(time_to_parse_headers, 5)) + 's' | ||||
# data['Body time'] = str(round(time_since_headers_parsed, 5)) + 's' | ||||
data[ELAPSED_TIME_LABEL] = str(round(time_elapsed, 10)) + 's' | ||||
return '\n'.join( | return '\n'.join( | |||
f'{key}: {value}' | f'{key}: {value}' | |||
for key, value in data.items() | for key, value in data.items() | |||
) | ) | |||
class HTTPRequest(HTTPMessage): | class HTTPRequest(HTTPMessage): | |||
"""A :class:`requests.models.Request` wrapper.""" | """A :class:`requests.models.Request` wrapper.""" | |||
def iter_body(self, chunk_size): | def iter_body(self, chunk_size): | |||
yield self.body | yield self.body | |||
End of changes. 3 change blocks. | ||||
1 lines changed or deleted | 12 lines changed or added |