REST API endpoint used for calling from hosts when context change happens in Workfile app.
Source code in client/ayon_timers_manager/rest_api.py
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 | class TimersManagerModuleRestApi:
"""
REST API endpoint used for calling from hosts when context change
happens in Workfile app.
"""
def __init__(self, user_module, server_manager):
self._log = None
self.module = user_module
self.server_manager = server_manager
self.prefix = "/timers_manager"
self.register()
@property
def log(self):
if self._log is None:
self._log = Logger.get_logger(self.__class__.__name__)
return self._log
def register(self):
self.server_manager.add_route(
"POST",
self.prefix + "/start_timer",
self.start_timer
)
self.server_manager.add_route(
"POST",
self.prefix + "/stop_timer",
self.stop_timer
)
self.server_manager.add_route(
"GET",
self.prefix + "/get_task_time",
self.get_task_time
)
async def start_timer(self, request):
data = await request.json()
try:
project_name = data["project_name"]
folder_path = data["folder_path"]
task_name = data["task_name"]
except KeyError:
msg = (
"Payload must contain fields 'project_name,"
" 'folder_path' and 'task_name'"
)
self.log.error(msg)
return Response(status=400, message=msg)
self.module.stop_timers()
try:
self.module.start_timer(project_name, folder_path, task_name)
except Exception as exc:
return Response(status=404, message=str(exc))
return Response(status=200)
async def stop_timer(self, request):
self.module.stop_timers()
return Response(status=200)
async def get_task_time(self, request):
data = await request.json()
try:
project_name = data["project_name"]
folder_path = data["folder_path"]
task_name = data["task_name"]
except KeyError:
message = (
"Payload must contain fields 'project_name, 'folder_path',"
" 'task_name'"
)
self.log.warning(message)
return Response(text=message, status=404)
time = self.module.get_task_time(project_name, folder_path, task_name)
return Response(text=json.dumps(time))
|