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):
|
def __init__(self, common):
|
||||||
super().__init__(common)
|
super().__init__(common)
|
||||||
self.model = self.base_model.snaplist
|
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):
|
def default(self):
|
||||||
self.ui.set_header(
|
self.ui.set_header(
|
||||||
|
|
|
@ -49,7 +49,7 @@ class SnapListModel:
|
||||||
def __init__(self, common):
|
def __init__(self, common):
|
||||||
self._snap_info = []
|
self._snap_info = []
|
||||||
self._snaps_by_name = {}
|
self._snaps_by_name = {}
|
||||||
self._from_snapd()
|
#self._from_snapd()
|
||||||
#self._from_sample_data()
|
#self._from_sample_data()
|
||||||
|
|
||||||
def _from_sample_data(self):
|
def _from_sample_data(self):
|
||||||
|
@ -70,9 +70,15 @@ class SnapListModel:
|
||||||
import requests_unixsocket
|
import requests_unixsocket
|
||||||
session = requests_unixsocket.Session()
|
session = requests_unixsocket.Session()
|
||||||
r = session.get(url)
|
r = session.get(url)
|
||||||
self._load_find_data(r.json())
|
return r.json()
|
||||||
log.debug("%s", 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):
|
def _load_find_data(self, data):
|
||||||
for s in data['result']:
|
for s in data['result']:
|
||||||
|
|
Loading…
Reference in New Issue