-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcli_script.py
More file actions
119 lines (96 loc) · 4.22 KB
/
cli_script.py
File metadata and controls
119 lines (96 loc) · 4.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import json
import argparse
import requests
from requests.exceptions import ConnectionError
DEFAULT_API_ROOT = 'http://127.0.0.1:5000/api'
def createParser():
"""Функция создания парсера аргументов"""
parser = argparse.ArgumentParser()
parser.add_argument('command',
help='Метод, который необходимо вызвать. Поддерживаемые команды: create, edit, delete, get, get_all',
nargs='?')
parser.add_argument('-f', '--file', help='Текстовый json файл с входными данными')
parser.add_argument('-a', '--api_root', default=DEFAULT_API_ROOT, help='Корневой адрес API')
parser.add_argument('-i', '--id',
help='Идентификатор встречи. Обязателен для методов изменения/удаления/получения (edit, delete, get)')
parser.add_argument('-p', '--page',
help='Номер страницы. По умолчанию равен 0', default=0)
parser.add_argument('-s', '--page_size',
help='Размер страницы. По умолчанию равен 50', default=50)
return parser
def get_all_meetings(page, page_size, api_root=DEFAULT_API_ROOT):
"""Получение всех встреч"""
try:
r = requests.get(f'{api_root}/meetings/get?page={page}&page_size={page_size}')
except ConnectionError:
print('Connection error')
return
print(r.json())
def edit_meeting(meeting_id, filename, api_root=DEFAULT_API_ROOT):
"""Редактирование встречи по id"""
data_json = json.load(open(filename, 'r'))
try:
r = requests.patch(f'{api_root}/meeting/edit/{meeting_id}',
json=data_json)
except ConnectionError:
print('Connection error')
return
print(r.json())
def create_meeting(filename, api_root=DEFAULT_API_ROOT):
"""Создание встречи"""
data_json = json.load(open(filename, 'r'))
try:
r = requests.post(f'{api_root}/meeting/create',
json=data_json)
except ConnectionError:
print('Connection error')
return
print(r.json())
def delete_meeting(meeting_id, api_root=DEFAULT_API_ROOT):
"""Удаление встречи по id"""
try:
r = requests.delete(f'{api_root}/meeting/delete/{meeting_id}')
except ConnectionError:
print('Connection error')
return
print(r.json())
def get_meeting(meeting_id, api_root=DEFAULT_API_ROOT):
"""Получение встречи по id"""
try:
r = requests.get(f'{api_root}/meeting/get/{meeting_id}')
except ConnectionError:
print('Connection error')
return
print(r.json())
if __name__ == '__main__':
parser = createParser()
namespace = parser.parse_args()
api_root = namespace.api_root if namespace.api_root else DEFAULT_API_ROOT
if namespace.command == 'create':
if not namespace.file:
print('Параметр -f не указан')
else:
create_meeting(namespace.file, api_root)
elif namespace.command == 'edit':
if not namespace.id:
print('Параметр -i не указан')
elif not namespace.file:
print('Параметр -f не указан')
else:
edit_meeting(namespace.id, namespace.file, api_root)
elif namespace.command == 'delete':
if not namespace.id:
print('Параметр -i не указан')
else:
delete_meeting(namespace.id)
elif namespace.command == 'get':
if not namespace.id:
print('Параметр -i не указан')
else:
get_meeting(namespace.id)
elif namespace.command == 'get_all':
page = namespace.page if namespace.page else 0
page_size = namespace.page_size if namespace.page_size else 50
get_all_meetings(page, page_size, namespace.api_root)
else:
print('Команда не поддерживается. Список доступных команд: -h')