async load snap list & info, all very happy-path
This commit is contained in:
parent
9863007e8c
commit
763cc79c8e
|
@ -27,6 +27,27 @@ class SnapListController(BaseController):
|
|||
def __init__(self, common):
|
||||
super().__init__(common)
|
||||
self.model = self.base_model.snaplist
|
||||
self.run_in_bg(
|
||||
self.model._from_snapd,
|
||||
self._got_find_data)
|
||||
|
||||
def _got_find_data(self, fut):
|
||||
data = fut.result()
|
||||
self.model._load_find_data(data)
|
||||
snap_names = []
|
||||
for snap in self.model.get_snap_list():
|
||||
snap_names.append(snap.name)
|
||||
self._load_next_info(snap_names)
|
||||
|
||||
def _load_next_info(self, snap_names):
|
||||
self.run_in_bg(
|
||||
lambda: self.model._from_snapd_info(snap_names[0]),
|
||||
lambda fut:self._got_info(fut, snap_names[1:]))
|
||||
|
||||
def _got_info(self, fut, remaining):
|
||||
self.model._load_info_data(fut.result())
|
||||
if remaining:
|
||||
self._load_next_info(remaining)
|
||||
|
||||
def default(self):
|
||||
self.ui.set_header(
|
||||
|
|
|
@ -49,7 +49,7 @@ class SnapListModel:
|
|||
def __init__(self, common):
|
||||
self._snap_info = []
|
||||
self._snaps_by_name = {}
|
||||
self._from_snapd()
|
||||
#self._from_snapd()
|
||||
#self._from_sample_data()
|
||||
|
||||
def _from_sample_data(self):
|
||||
|
@ -70,9 +70,15 @@ class SnapListModel:
|
|||
import requests_unixsocket
|
||||
session = requests_unixsocket.Session()
|
||||
r = session.get(url)
|
||||
self._load_find_data(r.json())
|
||||
log.debug("%s", r.json())
|
||||
return r.json()
|
||||
|
||||
def _from_snapd_info(self, name):
|
||||
sock = "/run/snapd.socket"
|
||||
url = "http+unix://{}/v2/find?name={}".format(quote_plus(sock), name)
|
||||
import requests_unixsocket
|
||||
session = requests_unixsocket.Session()
|
||||
r = session.get(url)
|
||||
return r.json()
|
||||
|
||||
def _load_find_data(self, data):
|
||||
for s in data['result']:
|
||||
|
|
Loading…
Reference in New Issue