async def search(self, **kwargs) -> t.List[collection.Task]: ''' Search based on given params. currently only latest 50 task will be retrieved. for more details of available parameters, see `_create_params`. ''' params = self._create_params(**kwargs) resp_handler = await self.send_message('getTasks', params, generate_id()) tasks = await resp_handler() return [collection.Task(res) for res in tasks['res']]
async def get_public_tasks(self, **kwargs) -> t.List[collection.Task]: '''Get public tasks based on the given query parameters. currently only latest 50 task will be retrieved. for more details of available parameters, see `_create_params`. ''' params = self._create_params(**kwargs) resp_handler = await self.subscribe( 'publicTasks', [params['skip'] + 50, params['skip'], params]) return [collection.Task(msg) for msg in await resp_handler()]
async def get_single_task(self, task_uuid: str) -> collection.Task: ''' Search task based on given UUID. you can get UUID by using `get_public_tasks` or just copy <UUID> part of URL of ANY.RUN on browser ('https://app.any.run/tasks/<UUID>/'). ''' task_obj_id = await self.check_task_exists(task_uuid) if not task_obj_id: raise AnyRunError(f'No task found. uuid={task_uuid}') task = await self._get_single_task(task_obj_id[0]) if not task: raise AnyRunError(f'Failed to get task. uuid={task_uuid}') return collection.Task(task[0])
def load_test_json(self, json_path): test_json = TEST_DATA_DIR / json_path return collection.Task(json.loads(test_json.read_text()))