Advertisement
Guest User

Untitled

a guest
Dec 17th, 2017
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.28 KB | None | 0 0
  1. import requests
  2. import hashlib
  3.  
  4. KEYS = {
  5.     'public': '3bc48ca2dd73e6eb8aa42a458ad3dabb',
  6.     'private': '40fac5841bd7d67740e61ff36cd166ad',
  7. }
  8.  
  9.  
  10. def get_sorted_keys(obj):
  11.     """
  12.    sort object keys alphabetically
  13.  
  14.    :param dict obj: dict object
  15.    :return: alphabetically sorted array of obj keys
  16.    """
  17.     return sorted(list(obj.keys()))
  18.  
  19.  
  20. def generate_data_string(obj, private_key):
  21.     """
  22.    generate string for api call from object and private key
  23.    :param dict obj: dict object with interesting fields like begin_date
  24.    :param str private_key: string with private key
  25.    :return str: string for sign
  26.    example:
  27.    generate_data_string({atest1: '1', btest2: '2'}, blabla)
  28.    =>
  29.    atest1=1btest2=2blabla
  30.    """
  31.     sorted_obj_keys = get_sorted_keys(obj)
  32.     string = ''
  33.     for key in sorted_obj_keys:
  34.         string += '{key}={value}'.format(key=key, value=obj[key])
  35.     return string + private_key
  36.  
  37.  
  38. def generate_md5(string):
  39.     """
  40.    generate md5 string for sign
  41.    :param str string:
  42.    :return: md5 string
  43.    """
  44.     return hashlib.md5(string.encode('utf-8')).hexdigest()
  45.  
  46.  
  47. data = {
  48.     'begin_date': '2017-11-16',
  49.     'end_date': '2017-12-20',
  50. }
  51.  
  52. print(generate_data_string(data, KEYS['private']))
  53. # => begin_date=2017-11-16end_date=2017-12-2040fac5841bd7d67740e61ff36cd166ad
  54. print(generate_md5(generate_data_string(data, KEYS['private'])))
  55. # => a6c37ca03653e11bc98f8520fdae91b8
  56.  
  57. sign = generate_md5(generate_data_string(data, KEYS['private']))
  58. data['sign'] = sign
  59.  
  60. print(data)
  61. # => {'end_date': '2017-12-20', 'sign': 'a6c37ca03653e11bc98f8520fdae91b8', 'begin_date': '2017-11-16'}
  62.  
  63. req_url = 'https://realtycalendar.ru/api/v1/bookings/{}'.format(KEYS['public'])
  64. print(req_url)
  65. # => https://realtycalendar.ru/api/v1/bookings/3bc48ca2dd73e6eb8aa42a458ad3dabb
  66.  
  67. response = requests.post(url=req_url, data=data)
  68.  
  69. # Информация о запросе
  70. print(response.request.body, response.request.url, response.request.method)
  71. # => sign=a6c37ca03653e11bc98f8520fdae91b8&begin_date=2017-11-16&end_date=2017-12-20 https://realtycalendar.ru/api/v1/bookings/3bc48ca2dd73e6eb8aa42a458ad3dabb POST
  72.  
  73.  
  74.  
  75. print(response.status_code)
  76. # => 404
  77. # в коде ответа значится 404 'Страница не найдена'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement