You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
859 B

4 years ago
  1. import base64
  2. import sys
  3. if sys.version_info[0] < 3:
  4. text_type = unicode # noqa: F821
  5. def native(s, encoding='utf-8'):
  6. if isinstance(s, unicode):
  7. return s.encode(encoding)
  8. return s
  9. else:
  10. text_type = str
  11. def native(s, encoding='utf-8'):
  12. if isinstance(s, bytes):
  13. return s.decode(encoding)
  14. return s
  15. def urlsafe_b64encode(data):
  16. """urlsafe_b64encode without padding"""
  17. return base64.urlsafe_b64encode(data).rstrip(b'=')
  18. def urlsafe_b64decode(data):
  19. """urlsafe_b64decode without padding"""
  20. pad = b'=' * (4 - (len(data) & 3))
  21. return base64.urlsafe_b64decode(data + pad)
  22. def as_unicode(s):
  23. if isinstance(s, bytes):
  24. return s.decode('utf-8')
  25. return s
  26. def as_bytes(s):
  27. if isinstance(s, text_type):
  28. return s.encode('utf-8')
  29. return s