added user search

This commit is contained in:
Sergey
2024-08-03 21:03:04 +03:00
parent e7796ec240
commit ba1fcbcca2
2 changed files with 142 additions and 10 deletions

View File

@@ -1,8 +1,10 @@
# bonus-import-tools
# bonus-import-tools - Приложение для импорта бонусных баллов.
bonus-import-tools
## Типы установки
## Приложение для импорта бонусных баллов.
- через python VENV (для разработки)
- через docker-compose (на сервере)
- через Nuitka (TODO)(у стороннего клиента)
### Требования для установки через pipenv
@@ -55,3 +57,6 @@ cd loyalty-load-tester
pip install -r requirements.txt
```
### Запуск exe (TODO)
- Nuitka

View File

@@ -6,20 +6,147 @@ import json
import httpx
# local imports
import app
import requests
app_token = app.APP_TOKEN
pos_token = app.POS_TOKEN
merchant_id = app.MERCHANT_ID
url = app.API_URI
url = 'https://api.dinect.ru/v1/'
__version__ = '1.0.0'
HEADERS = {
'Authorization': f'{app_token}',
'DM-Authorization': f'{pos_token}',
'User-Agent': 'bonus-import-tools-2024',
'Authorization': f'dmtoken {pos_token}',
'DM-Authorization': f'dmapptoken {app_token}',
'User-Agent': f'bonus-import-tools-2024 v.{__version__}',
'Accept': 'application/json',
'Accept-Language': 'ru,ru-RU;q=0.8,en-gb;q=0.5,en;q=0.3',
# 'Accept-Language': 'ru,ru-RU;q=0.8,en-gb;q=0.5,en;q=0.3',
'Accept-Charset': 'utf-8',
'Connection': 'close',
'Content-Type': 'application/x-www-form-urlencoded',
}
'Content-Type': 'application/json',
# 'Content-Type': 'application/x-www-form-urlencoded',
}
# GET /20130701/tokens/?next=/20130701/logon
# https://pos-api.dinect.com/20130701/tokens/3b01228843d115ae8c03a4d3b20dcb545dbb228c
def get_user(search_id, get_type='auto', headers=None):
"""
Retrieves user information based on the provided search ID.
Args:
search_id (str): The ID used to search for the user.
get_type (str, optional): The type of search to perform. Defaults to 'auto'.
headers (dict, optional): The headers to include in the request. Defaults to None.
Returns:
tuple: A tuple containing a boolean indicating if the user was found and the response text.
Raises:
None
Example:
# >>> get_user('1234567890123', get_type='auto')
(True, '[{"id":1002,"card":"4620011139016364102713436","discount":0,"amount":"0.00","purchases":0,"bonus":10,"first_name":"Сергей Жданов","last_name":"","middle_name":"","photo_urls":{"100x125":"https://static.dinect.com/load/usr/ava/000/000/001/002/43ebeec7c6ee/avatar-100x100.png","50x62":"https://static.dinect.com/load/usr/ava/000/000/001/002/43ebeec7c6ee/avatar-50x50.png"},"coupons_url":"https://pos-api.dinect.com/20130701/users/1002/coupons/","purchases_url":"https://pos-api.dinect.com/20130701/users/1002/purchases/byforeigncard/1234567890123/","loyalty_url":"https://pos-api.dinect.com/20130701/loyalties/byforeigncard/1234567890123","url":"https://pos-api.dinect.com/20130701/users/1002"}]')
"""
if headers is None:
headers = HEADERS
base_url = url + '/users/'
# get_type = auto, card, phone, email, foreigncard
response = httpx.get(
base_url,
headers=headers,
params={
get_type: search_id
}
)
if response.status_code == 200:
# print('User found', user_id, 'response.text', response.text)
return True, response.text
else:
# print('get_headers', headers)
# print('response_headers', response.headers)
# print('User not found', search_id, 'response.text', response.text)
return False, response.text
def new_user(foreign_card, headers=None):
if headers is None:
headers = HEADERS
base_url = url + '/users/'
response = httpx.post(
base_url,
headers=headers,
json={
'foreigncard': foreign_card
}
)
if response.status_code == 200:
return True, response.text
else:
return False, response.text
def bonuses_update(user_id, summ_total, bonus_amount, doc_id, headers=None):
if headers is None:
headers = HEADERS
print(headers)
base_url = url + 'users/' + str(user_id) + '/purchases/'
params = {
"doc_id": doc_id,
"bonus_amount": bonus_amount,
"sum_total": summ_total,
# "sum_total": '0.00',
"sum_discount": '10.00',
"sum_with_discount ": '90.00',
"commit": 'True',
# "curr_iso_code": '643',
# "redeem_auto": 'True',
"curr_iso_name": 'RUB',
# "override": 'True',
# 'password': 'True',
"date": '2024-08-03 12:53:07',
}
# data = {
# 'bonus_amount': '10.00',
# 'commit': 'True',
# 'curr_iso_code': '643',
# 'override': 'True',
# # 'password': 'True',
# 'sum_total': '0',
# }
r = requests.post(base_url, headers=headers, json=params)
# {"doc_id": "test1", "bonus_amount": "10", "commit": "False", "curr_iso_code": "643", "override": "True", "sum_total": "100"}
# response = httpx.post(
# base_url,
# headers=headers,
# params=params
# )
# if response.status_code == 200:
# return True, response.text
# else:
# print('params', params)
# print('base_url', base_url)
# return False, response.text
print('params', params)
if r.status_code == 201:
return True, r.text
else:
return False, r.text
# print(get_user('1234567890123'))
# print(get_user('1002'))
# print(new_user('1234567890123'))
print(bonuses_update('1002', '100.00', '10.00', doc_id='test11'))