api-example.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/usr/bin/python
  2. # Copyright 2013 Christian Berendt
  3. #
  4. # This program is free software; you can redistribute it and/or modify it under
  5. # the terms of the GNU General Public License as published by the Free Software
  6. # Foundation; either version 3 of the License, or (at your option) any later
  7. # version. See COPYING for more details.
  8. import argparse
  9. import json
  10. import logging
  11. import pprint
  12. import socket
  13. logging.basicConfig(
  14. format='%(asctime)s %(levelname)s %(message)s',
  15. level=logging.DEBUG
  16. )
  17. parser = argparse.ArgumentParser()
  18. parser.add_argument("command", default="summary", nargs='?')
  19. parser.add_argument("parameter", default="", nargs='?')
  20. parser.add_argument("--hostname", default="localhost")
  21. parser.add_argument("--port", type=int, default=4028)
  22. args = parser.parse_args()
  23. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  24. try:
  25. s.connect((args.hostname, args.port))
  26. except socket.error, e:
  27. logging.error(e)
  28. try:
  29. s.send("{\"command\" : \"%s\", \"parameter\" : \"%s\"}"
  30. % (args.command, args.parameter)
  31. )
  32. except socket.error, e:
  33. logging.error(e)
  34. data = ''
  35. while True:
  36. try:
  37. newdata = s.recv(1024)
  38. if newdata:
  39. data += newdata
  40. else:
  41. break
  42. except socket.error, e:
  43. break
  44. try:
  45. s.close()
  46. except socket.error,e:
  47. logging.error(e)
  48. if data:
  49. data = json.loads(data.replace('\x00', ''))
  50. pp = pprint.PrettyPrinter()
  51. pp.pprint(data)