cli.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #!/usr/bin/env python3
  2. import sys
  3. from pprint import pprint
  4. import requests
  5. import argparse
  6. try:
  7. from colors import color
  8. except ImportError:
  9. def color(text, *args, **kwargs):
  10. return text
  11. def req(args, location, data=None):
  12. kwargs = {}
  13. if data is not None:
  14. kwargs['json'] = data
  15. r = requests.post(args.endpoint + location,
  16. auth=tuple(args.auth.split(":", 2)),
  17. **kwargs
  18. )
  19. return r
  20. def main_channel_list(args):
  21. r = req(args, "/rsGxsChannels/getChannelsSummaries")
  22. channels = r.json()['channels']
  23. for chan in channels:
  24. print(color(chan['mGroupName'], style='bold', fg='green'))
  25. print(' ' + color(chan['mGroupId'], style='underline'))
  26. def main_channel_show(args):
  27. r = req(
  28. args, "/rsGxsChannels/getChannelsInfo",
  29. {
  30. 'chanIds': [args.channel_id]
  31. }
  32. )
  33. data = r.json()
  34. channels = data['channelsInfo']
  35. for chan in channels:
  36. print(color(chan['mMeta']['mGroupName'], style='bold', fg='green'))
  37. print(' ' + color(chan['mMeta']['mGroupId'], style='underline'))
  38. print(' ' + chan['mDescription'])
  39. print(color('Last Post:', style='bold') + ' \t%s' % chan['mMeta']['mLastPost'])
  40. def main_channel_post(args):
  41. chid = args.channel_id
  42. r = req(
  43. args, "/rsGxsChannels/createPostV2",
  44. {
  45. 'channelId': args.channel_id,
  46. 'title': args.post_title,
  47. 'mBody': args.post_body,
  48. }
  49. )
  50. ret = r.json()
  51. if ret.get('retval', True) is False:
  52. print(color('ERROR: could not create post', fg='red', style='bold'))
  53. print(ret['errorMessage'])
  54. pprint(ret)
  55. sys.exit(1)
  56. pprint(ret)
  57. def get_parser():
  58. p = argparse.ArgumentParser()
  59. p.add_argument("--endpoint", default="http://127.0.0.1:9092")
  60. p.add_argument("-u", "--auth", dest="auth")
  61. p_sub = p.add_subparsers()
  62. ch = p_sub.add_parser("channel")
  63. ch.add_argument("--channel-id")
  64. ch_sub = ch.add_subparsers()
  65. ch_list = ch_sub.add_parser("list")
  66. ch_list.set_defaults(mainfunc=main_channel_list)
  67. ch_show = ch_sub.add_parser("show")
  68. ch_show.set_defaults(mainfunc=main_channel_show)
  69. ch_post = ch_sub.add_parser("post")
  70. ch_post.set_defaults(mainfunc=main_channel_post)
  71. ch_post.add_argument('--post-title')
  72. ch_post.add_argument('--post-body')
  73. return p
  74. def main():
  75. p = get_parser()
  76. args = p.parse_args()
  77. if getattr(args, "mainfunc", None) is None:
  78. print("Not a complete command")
  79. sys.exit(2)
  80. args.mainfunc(args)
  81. if __name__ == "__main__":
  82. main()