Skip to content

Latest commit

 

History

History
186 lines (174 loc) · 9.03 KB

TODO.adoc

File metadata and controls

186 lines (174 loc) · 9.03 KB

TODO List

Hackweek 2018 Goals

  • Refactor code to remove duplication

  • Add documentation for calls

  • Import packages to watch from external JSON file (project name, URL, type for match [release or name])

  • Update version file from gist without external ruby gist tool

  • Error handling for the common errors

    • Deal with lost connections and timeouts

TODOS

  • Build an import module

  • Put in error handling for offline errors

  • Make version list independent of ordering

  • Refactor data calls to GraphQL / GitHub QPI v4

  • Refactor Update classes for duplicated initialization

  • Add dead man switch

    • At midnight ":bell: All’s well, all’s well. :bell:"

  • Refactor get_version to be handled only once inside the Update Class

    • Started on refactor-get_version branch

  • Add GitHub auth to forgo rate limits

  • Read Packages to check from external JSON file

  • Refactor package initialization into class

  • Refactor version stringing into two reusable functions

Unhandled Errors

Traceback (most recent call last):
  File "update_bot.py", line 197, in <module>
    main()
  File "update_bot.py", line 189, in main
    schedule.run_pending()
  File "/usr/local/lib/python2.7/dist-packages/schedule/__init__.py", line 452, in run_pending
    default_scheduler.run_pending()
  File "/usr/local/lib/python2.7/dist-packages/schedule/__init__.py", line 75, in run_pending
    self._run_job(job)
  File "/usr/local/lib/python2.7/dist-packages/schedule/__init__.py", line 129, in _run_job
    ret = job.run()
  File "/usr/local/lib/python2.7/dist-packages/schedule/__init__.py", line 377, in run
    ret = self.job_func()
  File "update_bot.py", line 22, in do_update
    qBittorrent(),
  File "update_bot.py", line 130, in __init__
    self.verstring = (liquidize(self.get_data(self.srcstring)).p.string)
  File "update_bot.py", line 88, in get_data
    data = requests.get(srcstring, headers)
  File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 72, in get
    return request('get', url, params=params, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 508, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 618, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/adapters.py", line 508, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='www.qbittorrent.org', port=443): Max retries exceeded with url: /news.php (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0xb5fc73b0>: Failed to establish a new connection: [Errno 111] Connection refused',))
File "update_bot.py", line 59, in notify
  send_bot_msg(message)
File "update_bot.py", line 54, in send_bot_msg
  bot.sendMessage(user_id, message)
File "/usr/local/lib/python2.7/dist-packages/telepot/__init__.py", line 456, in sendMessage
  return self._api_request('sendMessage', _rectify(p))
File "/usr/local/lib/python2.7/dist-packages/telepot/__init__.py", line 434, in _api_request
  return api.request((self._token, method, params, files), **kwargs)
File "/usr/local/lib/python2.7/dist-packages/telepot/api.py", line 130, in request
  r = fn(*args, **kwargs)  # `fn` must be thread-safe
File "/usr/local/lib/python2.7/dist-packages/urllib3/request.py", line 148, in request_encode_body
  return self.urlopen(method, url, **extra_kw)
File "/usr/local/lib/python2.7/dist-packages/urllib3/poolmanager.py", line 321, in urlopen
  response = conn.urlopen(method, u.request_uri, **kw)
File "/usr/local/lib/python2.7/dist-packages/urllib3/connectionpool.py", line 639, in urlopen
  _stacktrace=sys.exc_info()[2])
File "/usr/local/lib/python2.7/dist-packages/urllib3/util/retry.py", line 357, in increment
  raise six.reraise(type(error), error, _stacktrace)
File "/usr/local/lib/python2.7/dist-packages/urllib3/connectionpool.py", line 601, in urlopen
  chunked=chunked)
File "/usr/local/lib/python2.7/dist-packages/urllib3/connectionpool.py", line 380, in _make_request
  httplib_response = conn.getresponse(buffering=True)
File "/usr/lib/python2.7/httplib.py", line 1111, in getresponse
  response.begin()
File "/usr/lib/python2.7/httplib.py", line 444, in begin
  version, status, reason = self._read_status()
File "/usr/lib/python2.7/httplib.py", line 400, in _read_status
  line = self.fp.readline(_MAXLINE + 1)
File "/usr/lib/python2.7/socket.py", line 476, in readline
  data = self._sock.recv(self._rbufsize)
File "/usr/lib/python2.7/ssl.py", line 714, in recv
  return self.read(buflen)
File "/usr/lib/python2.7/ssl.py", line 608, in read
  v = self._sslobj.read(len or 1024)
urllib3.exceptions.ProtocolError: ('Connection aborted.', error(104, 'Connection reset by peer'))
File "update_bot.py", line 73, in notify
  send_bot_msg(message)
File "update_bot.py", line 68, in send_bot_msg
  bot.sendMessage(user_id, message)
File "/usr/local/lib/python2.7/dist-packages/telepot/__init__.py", line 456, in sendMessage
  return self._api_request('sendMessage', _rectify(p))
File "/usr/local/lib/python2.7/dist-packages/telepot/__init__.py", line 434, in _api_request
  return api.request((self._token, method, params, files), **kwargs)
File "/usr/local/lib/python2.7/dist-packages/telepot/api.py", line 130, in request
  r = fn(*args, **kwargs)  # `fn` must be thread-safe
File "/usr/local/lib/python2.7/dist-packages/urllib3/request.py", line 148, in request_encode_body
  return self.urlopen(method, url, **extra_kw)
File "/usr/local/lib/python2.7/dist-packages/urllib3/poolmanager.py", line 321, in urlopen
  response = conn.urlopen(method, u.request_uri, **kw)
File "/usr/local/lib/python2.7/dist-packages/urllib3/connectionpool.py", line 639, in urlopen
  _stacktrace=sys.exc_info()[2])
File "/usr/local/lib/python2.7/dist-packages/urllib3/util/retry.py", line 357, in increment
  raise six.reraise(type(error), error, _stacktrace)
File "/usr/local/lib/python2.7/dist-packages/urllib3/connectionpool.py", line 601, in urlopen
  chunked=chunked)
File "/usr/local/lib/python2.7/dist-packages/urllib3/connectionpool.py", line 380, in _make_request
  httplib_response = conn.getresponse(buffering=True)
File "/usr/lib/python2.7/httplib.py", line 1121, in getresponse
  response.begin()
File "/usr/lib/python2.7/httplib.py", line 438, in begin
  version, status, reason = self._read_status()
File "/usr/lib/python2.7/httplib.py", line 394, in _read_status
  line = self.fp.readline(_MAXLINE + 1)
File "/usr/lib/python2.7/socket.py", line 480, in readline
  data = self._sock.recv(self._rbufsize)
File "/usr/local/lib/python2.7/dist-packages/urllib3/contrib/pyopenssl.py", line 274, in recv
  return self.recv(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/urllib3/contrib/pyopenssl.py", line 263, in recv
  raise SocketError(str(e))
urllib3.exceptions.ProtocolError: ('Connection aborted.', error("(104, 'ECONNRESET')",))
Data malformed for G870A update, missing currentsoftdetails
G870A version "G870AUCS2DQD1" is already known.
qBittorrent version "3.3.15" is already known.
KeePassXC version "2.2.0" is already known.
Atom version "1.19.4" is already known.
Asciidoctor-PDF version "v1.5.0 Alpha 16" is already known.
AsciiBinder version "v0.1.10.1" is already known.
Traceback (most recent call last):
  File "update_bot.py", line 265, in <module>
    main()
  File "update_bot.py", line 253, in main
    schedule.run_pending()
  File "/usr/local/lib/python2.7/dist-packages/schedule/__init__.py", line 452, in run_pending
    default_scheduler.run_pending()
  File "/usr/local/lib/python2.7/dist-packages/schedule/__init__.py", line 75, in run_pending
    self._run_job(job)
  File "/usr/local/lib/python2.7/dist-packages/schedule/__init__.py", line 129, in _run_job
    ret = job.run()
  File "/usr/local/lib/python2.7/dist-packages/schedule/__init__.py", line 377, in run
    ret = self.job_func()
  File "update_bot.py", line 35, in do_update
    G870A(),
  File "update_bot.py", line 126, in __init__
    self.xml = self.get_data(self.srcstring, {'Accept': 'application/json'}).json()['resultBody']['contentTypeProperties']['currentsoftdetails']
KeyError: 'currentsoftdetails'

DONE