@asyncio.coroutine<EOL><INDENT>def call(self, path, extra=None):<DEDENT>
try:<EOL><INDENT>if not self.__webfsapi:<EOL><INDENT>self.__webfsapi = yield from self.get_fsapi_endpoint()<EOL><DEDENT>if not self.sid:<EOL><INDENT>self.sid = yield from self.create_session()<EOL><DEDENT>if not isinstance(extra, dict):<EOL><INDENT>extra = dict()<EOL><DEDENT>params = dict(pin=self.pin, sid=self.sid)<EOL>params.update(**extra)<EOL>req_url = ('<STR_LIT>' % (self.__webfsapi, path))<EOL>result = yield from self.__session.get(req_url, params=params,<EOL>timeout = self.timeout)<EOL>if result.status == <NUM_LIT:200>:<EOL><INDENT>text = yield from result.text(encoding='<STR_LIT:utf-8>')<EOL><DEDENT>else:<EOL><INDENT>self.sid = yield from self.create_session()<EOL>params = dict(pin=self.pin, sid=self.sid)<EOL>params.update(**extra)<EOL>result = yield from self.__session.get(req_url, params=params,<EOL>timeout = self.timeout)<EOL>text = yield from result.text(encoding='<STR_LIT:utf-8>')<EOL><DEDENT>return objectify.fromstring(text)<EOL><DEDENT>except Exception as e:<EOL><INDENT>logging.info('<STR_LIT>' +traceback.format_exc())<EOL><DEDENT>return None<EOL>
Execute a frontier silicon API call.