MCPcopy Create free account
hub / github.com/pyfa-org/Pyfa / CheckUpdateThread

Class CheckUpdateThread

service/update.py:37–99  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

35
36
37class CheckUpdateThread(threading.Thread):
38 def __init__(self, callback):
39 threading.Thread.__init__(self)
40 self.name = "CheckUpdate"
41 self.callback = callback
42 self.settings = UpdateSettings.getInstance()
43 self.network = Network.getInstance()
44 self.running = True
45
46 def run(self):
47 network = Network.getInstance()
48
49 try:
50 try:
51 response = network.get(
52 url='https://www.pyfa.io/update_check?pyfa_version={}&client_hash={}'.format(config.version, config.getClientSecret()),
53 type=network.UPDATE, timeout=5)
54 except (KeyboardInterrupt, SystemExit):
55 raise
56 except Exception as e:
57 response = network.get(
58 url='https://api.github.com/repos/pyfa-org/Pyfa/releases',
59 type=network.UPDATE, timeout=5)
60
61 jsonResponse = response.json()
62 jsonResponse.sort(
63 key=lambda x: calendar.timegm(dateutil.parser.parse(x['published_at']).utctimetuple()),
64 reverse=True
65 )
66
67 for release in jsonResponse[:5]:
68 rVersion = Version(release['tag_name'])
69 cVersion = Version(config.version)
70
71 # Suppress pre releases if we're not already on a pre-release (if we are, we want to know about new ones)
72 if not cVersion.is_prerelease and rVersion.is_prerelease and self.settings.get('prerelease'):
73 continue
74
75 # Handle use-case of updating to suppressed version
76 if self.settings.get('version') == 'v' + config.version:
77 self.settings.set('version', None)
78
79 # Suppress version
80 if release['tag_name'] == self.settings.get('version'):
81 break
82
83 if rVersion > cVersion:
84 wx.CallAfter(self.callback, release, rVersion)
85 break
86
87 except (KeyboardInterrupt, SystemExit):
88 raise
89 except Exception as e:
90 pyfalog.error("Caught exception in run")
91 pyfalog.error(e)
92 pass
93
94 @staticmethod

Callers 1

CheckUpdateMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected