requests.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. class Response:
  2. def __init__(self, status_code, reason, content):
  3. self.status_code = status_code
  4. self.reason = reason
  5. self.content = content
  6. assert type(self.status_code) is int
  7. assert type(self.reason) is str
  8. assert type(self.content) is bytes
  9. @property
  10. def text(self):
  11. return self.content.decode()
  12. def __repr__(self):
  13. code = self.status_code
  14. return f'<Response [{code}]>'
  15. def _parse_h(headers):
  16. if headers is None:
  17. return []
  18. if type(headers) is dict:
  19. return list(headers.items())
  20. raise ValueError('headers must be dict or None')
  21. def get(url, headers=None):
  22. headers = _parse_h(headers)
  23. return _request('GET', url, headers, None)
  24. def post(url, data: bytes, headers=None):
  25. headers = _parse_h(headers)
  26. return _request('POST', url, headers, data)
  27. def put(url, data: bytes, headers=None):
  28. headers = _parse_h(headers)
  29. return _request('PUT', url, headers, data)
  30. def delete(url, headers=None):
  31. headers = _parse_h(headers)
  32. return _request('DELETE', url, headers, None)