3 from nevow import rend, url, tags as T
4 from nevow.inevow import IRequest
6 from allmydata.web.common import getxmlfile, get_arg, WebError
9 class MagicFolderWebApi(rend.Page):
11 I provide the web-based API for Magic Folder status etc.
14 def __init__(self, client):
15 ##rend.Page.__init__(self, storage)
16 super(MagicFolderWebApi, self).__init__(client)
19 def _render_json(self, req):
20 req.setHeader("content-type", "application/json")
23 for item in self.client._magic_folder.uploader.get_status():
26 status=item.status_history()[-1][0],
29 for (status, ts) in item.status_history():
30 d[status + '_at'] = ts
31 d['percent_done'] = item.progress.progress
34 for item in self.client._magic_folder.downloader.get_status():
37 status=item.status_history()[-1][0],
40 for (status, ts) in item.status_history():
41 d[status + '_at'] = ts
42 d['percent_done'] = item.progress.progress
45 return simplejson.dumps(data)
47 def renderHTTP(self, ctx):
49 t = get_arg(req, "t", None)
52 return rend.Page.renderHTTP(self, ctx)
56 return self._render_json(req)
58 raise WebError("'%s' invalid type for 't' arg" % (t,), 400)