Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- import hashlib
- KEYS = {
- 'public': '3bc48ca2dd73e6eb8aa42a458ad3dabb',
- 'private': '40fac5841bd7d67740e61ff36cd166ad',
- }
- def get_sorted_keys(obj):
- """
- sort object keys alphabetically
- :param dict obj: dict object
- :return: alphabetically sorted array of obj keys
- """
- return sorted(list(obj.keys()))
- def generate_data_string(obj, private_key):
- """
- generate string for api call from object and private key
- :param dict obj: dict object with interesting fields like begin_date
- :param str private_key: string with private key
- :return str: string for sign
- example:
- generate_data_string({atest1: '1', btest2: '2'}, blabla)
- =>
- atest1=1btest2=2blabla
- """
- sorted_obj_keys = get_sorted_keys(obj)
- string = ''
- for key in sorted_obj_keys:
- string += '{key}={value}'.format(key=key, value=obj[key])
- return string + private_key
- def generate_md5(string):
- """
- generate md5 string for sign
- :param str string:
- :return: md5 string
- """
- return hashlib.md5(string.encode('utf-8')).hexdigest()
- data = {
- 'begin_date': '2017-11-16',
- 'end_date': '2017-12-20',
- }
- print(generate_data_string(data, KEYS['private']))
- # => begin_date=2017-11-16end_date=2017-12-2040fac5841bd7d67740e61ff36cd166ad
- print(generate_md5(generate_data_string(data, KEYS['private'])))
- # => a6c37ca03653e11bc98f8520fdae91b8
- sign = generate_md5(generate_data_string(data, KEYS['private']))
- data['sign'] = sign
- print(data)
- # => {'end_date': '2017-12-20', 'sign': 'a6c37ca03653e11bc98f8520fdae91b8', 'begin_date': '2017-11-16'}
- req_url = 'https://realtycalendar.ru/api/v1/bookings/{}'.format(KEYS['public'])
- print(req_url)
- # => https://realtycalendar.ru/api/v1/bookings/3bc48ca2dd73e6eb8aa42a458ad3dabb
- response = requests.post(url=req_url, data=data)
- # Информация о запросе
- print(response.request.body, response.request.url, response.request.method)
- # => sign=a6c37ca03653e11bc98f8520fdae91b8&begin_date=2017-11-16&end_date=2017-12-20 https://realtycalendar.ru/api/v1/bookings/3bc48ca2dd73e6eb8aa42a458ad3dabb POST
- print(response.status_code)
- # => 404
- # в коде ответа значится 404 'Страница не найдена'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement