api.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import asyncio, json, random
  2. import sys
  3. # import lib.config
  4. from lib.net import Channel
  5. async def create_channel():
  6. # server_name = lib.config.get("server", "localhost")
  7. server_name = "localhost"
  8. reader, writer = await asyncio.open_connection(server_name, 23341)
  9. channel = Channel(reader, writer)
  10. return channel
  11. def random_id():
  12. return random.randint(0, 2**32)
  13. async def query(method, params):
  14. channel = await create_channel()
  15. request = {
  16. "id": random_id(),
  17. "method": method,
  18. "params": params,
  19. "jsonrpc": "2.0",
  20. }
  21. await channel.send(request)
  22. response = await channel.receive()
  23. # Closed connect returns None
  24. if response is None:
  25. print("error: connection with server was closed", file=sys.stderr)
  26. sys.exit(-1)
  27. if "error" in response:
  28. error = response["error"]
  29. errcode, errmsg = error["code"], error["message"]
  30. print(f"error: {errcode} - {errmsg}", file=sys.stderr)
  31. sys.exit(-1)
  32. return response["result"]
  33. async def get_info():
  34. return await query("get_info", [])
  35. ########
  36. async def get_ref_ids():
  37. return await query("get_ref_ids", [])
  38. async def get_task_by_ref_id(refid):
  39. return await query("get_task_by_ref_id", [refid])
  40. ########
  41. async def add_task(task):
  42. return await query("add", [task])
  43. async def fetch_active_tasks():
  44. return await query("fetch_active_tasks", [])
  45. async def fetch_deactive_tasks(month):
  46. return await query("fetch_deactive_tasks", [month])
  47. async def fetch_task(task_id):
  48. return await query("fetch_task", [task_id])
  49. async def fetch_archive_task(task_id, month):
  50. return await query("fetch_archive_task", [task_id, month])
  51. async def modify_task(who, id, changes):
  52. return await query("modify_task", [who, id, changes])
  53. async def change_task_status(who, id, status):
  54. await query("change_task_status", [who, id, status])
  55. return True
  56. async def add_task_comment(who, id, comment):
  57. await query("add_task_comment", [who, id, comment])
  58. return True