downloader.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import vim
  2. import json
  3. import urllib.request
  4. from urllib.error import URLError
  5. def downloadAndParseJSON():
  6. try:
  7. data = urllib.request.urlopen(vim.eval('l:requesturl')).read().decode('utf-8')
  8. except URLError:
  9. vim.command('let l:downloadfailed = "%s"' % 'Could not connect to URL')
  10. return
  11. try:
  12. parsedJSON = json.loads(data)
  13. except ValueError:
  14. vim.command('let l:downloadfailed = "%s"' % 'The server returned non-JSON')
  15. return
  16. datalocation = vim.eval('a:result')
  17. for part in datalocation.split('/'):
  18. try:
  19. part = int(part)
  20. except ValueError:
  21. pass
  22. try:
  23. parsedJSON = parsedJSON[part]
  24. except IndexError:
  25. vim.command('let l:downloadfailed = "%s"' % 'The requested data was not found on the expected position')
  26. break
  27. try:
  28. parsedJSON = parsedJSON.replace('"', '\\"')
  29. except AttributeError:
  30. vim.command('let l:downloadfailed = "%s"' % 'The requested data was not found on the expected position')
  31. vim.command('let l:parsedresult = "%s"' % parsedJSON)
  32. downloadAndParseJSON()