async def start_internal(self): try: async with self.connection as ws: async for msg in ws: if msg.type == aiohttp.WSMsgType.TEXT: try: data = msg.json(loads=lambda s: checker.parse_json( s, [ 'id', 'x', 'y', 'message', 'public', 'user' ], ['id'])) except Exception as ex: checker.mumble( error='can\'t parse service responce', exception=ex) await self.queue.put(data) elif msg.type == aiohttp.WSMsgType.CLOSED: self.closed = True break else: checker.mumble( error= 'get message with unexpected type {}\nmessage: {}'. format(msg.type, msg.data)) except Exception as ex: checker.down(error='something down', exception=ex)
async def get_path(self, start, finish, inners): response = await self.post('/api/path', { 'start': start, 'finish': finish, 'sub': inners }) return checker.parse_json(response)
async def start_internal(self): async with self.connection as ws: async for msg in ws: if msg.type == aiohttp.WSMsgType.TEXT: try: data = msg.json(loads = lambda s : checker.parse_json(s, ['url', 'owner'])) except Exception as ex: checher.mumble(error='can\'t parse service responce', exception=ex) await self.queue.put((data['url'], data['owner'])) elif msg.type == aiohttp.WSMsgType.CLOSED: break else: checker.mumble(error='get message with unexpected type {}\nmessage: {}'.format(msg.type, msg.data))
async def put_post(self, title=None, body=None, public=None, signed=False, username=None, need_skill=False, skill=None): if title is None: title = checker.get_rand_string(16, ' ') if body is None: body = checker.get_rand_string(1024, ' ') if public is None: public = random.randrange(2) == 0 request = {'title': title, 'body': body} if public: request['is_public'] = 'on' if signed: request['sign'] = self.signer.sign(self.hostname, username, request) if need_skill: if skill is None: skill = checker.get_rand_string(10, ' ') request['requirement'] = skill else: requirement = None response = await self.post('publish', request) url = checker.parse_json(response)[0] return url, public, title, body, skill
async def get_post(self, url, signed=False, username=None): response = await self.get(url) data = checker.parse_json(response, ['title', 'body']) if signed and not self.signer.check(self.hostname, username, data): checker.mumble(error='fail check sign for url {}'.format(url)) return data
async def get_points(self): return checker.parse_json(await self.get('/api/points'))