parameter_helper.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. try:
  2. from urllib import quote_plus, urlencode
  3. except ImportError:
  4. from urllib.parse import quote_plus, urlencode
  5. import hmac
  6. import hashlib
  7. import base64
  8. TIME_ZONE = "UTC"
  9. FORMAT_ISO_8601 = "yyyy-MM-dd'T'HH:mm:ss'Z'"
  10. FORMAT_RFC_2616 = "%a, %d %b %Y %H:%M:%S GMT"
  11. SEPARATOR = "&"
  12. ENCODING = "UTF-8"
  13. ALGORITHM_NAME = "HmacSHA1"
  14. def compose_string_to_sign(method, queries):
  15. sorted_key = sorted(list(queries.keys()))
  16. canonicalized_query_string = ''
  17. for key in sorted_key:
  18. canonicalized_query_string += '&%s=%s' % (
  19. quote_plus(key), quote_plus(queries.get(key))
  20. )
  21. string_to_sign = method + SEPARATOR + quote_plus('/') + SEPARATOR + quote_plus(canonicalized_query_string[1:])
  22. return string_to_sign
  23. def sign_string(sign, secret):
  24. hash_val = hmac.new(secret.encode(ENCODING), sign.encode(ENCODING), hashlib.sha1).digest()
  25. signature = base64.b64encode(hash_val)
  26. return signature
  27. def compose_url(endpoint, queries, protocol):
  28. url = protocol + "://" + endpoint + "/?"
  29. url += urlencode(queries)
  30. return url