コード例 #1
0
ファイル: core.py プロジェクト: WangJiannan/pyswagger
    def load_obj(self, jref, getter=None, parser=None):
        """ load a object(those in spec._version_.objects) from a JSON reference.
        """
        obj = self.__resolver.resolve(jref, getter)

        # get root document to check its swagger version.
        tmp = {'_tmp_': {}}
        version = utils.get_swagger_version(obj)
        if version == '1.2':
            # swagger 1.2
            with ResourceListContext(tmp, '_tmp_') as ctx:
                ctx.parse(obj, jref, self.__resolver, getter)
        elif version == '2.0':
            # swagger 2.0
            with SwaggerContext(tmp, '_tmp_') as ctx:
                ctx.parse(obj)
        elif version == None and parser:
            with parser(tmp, '_tmp_') as ctx:
                ctx.parse(obj)

            version = tmp['_tmp_'].__swagger_version__ if hasattr(tmp['_tmp_'], '__swagger_version__') else version
        else:
            raise NotImplementedError('Unsupported Swagger Version: {0} from {1}'.format(version, jref))

        if not tmp['_tmp_']:
            raise Exception('Unable to parse object from {0}'.format(jref))

        logger.info('version: {0}'.format(version))

        return tmp['_tmp_'], version
コード例 #2
0
ファイル: core.py プロジェクト: olipratt/pyswagger
    def load_obj(self, jref, getter=None, parser=None):
        """ load a object(those in spec._version_.objects) from a JSON reference.
        """
        obj = self.__resolver.resolve(jref, getter)

        # get root document to check its swagger version.
        tmp = {'_tmp_': {}}
        version = utils.get_swagger_version(obj)
        if version == '1.2':
            # swagger 1.2
            with ResourceListContext(tmp, '_tmp_') as ctx:
                ctx.parse(obj, jref, self.__resolver, getter)
        elif version == '2.0':
            # swagger 2.0
            with SwaggerContext(tmp, '_tmp_') as ctx:
                ctx.parse(obj)
        elif version == None and parser:
            with parser(tmp, '_tmp_') as ctx:
                ctx.parse(obj)

            version = tmp['_tmp_'].__swagger_version__ if hasattr(tmp['_tmp_'], '__swagger_version__') else version
        else:
            raise NotImplementedError('Unsupported Swagger Version: {0} from {1}'.format(version, jref))

        if not tmp['_tmp_']:
            raise Exception('Unable to parse object from {0}'.format(jref))

        logger.info('version: {0}'.format(version))

        return tmp['_tmp_'], version
コード例 #3
0
ファイル: core.py プロジェクト: pwfff/pyswagger
    def _load_obj(self, url, getter=None, parser=None):
        """
        """
        if url in self.__app_cache:
            logger.info('{0} hit cache'.format(url))

            # look into cache first
            return

        # apply hook when use this url to load
        # note that we didn't cache SwaggerApp with this local_url
        local_url = url if not self.__url_load_hook else self.__url_load_hook(
            url)

        logger.info('{0} patch to {1}'.format(url, local_url))

        if not getter:
            getter = UrlGetter
            p = six.moves.urllib.parse.urlparse(local_url)
            if p.scheme == 'file' and p.path:
                getter = LocalGetter(os.path.join(p.netloc, p.path))

        if inspect.isclass(getter):
            # default initialization is passing the url
            # you can override this behavior by passing an
            # initialized getter object.
            getter = getter(local_url)

        # get root document to check its swagger version.
        obj, _ = six.advance_iterator(getter)
        tmp = {'_tmp_': {}}
        version = utils.get_swagger_version(obj)
        if version == '1.2':
            # swagger 1.2
            with ResourceListContext(tmp, '_tmp_') as ctx:
                ctx.parse(getter, obj)
        elif version == '2.0':
            # swagger 2.0
            with SwaggerContext(tmp, '_tmp_') as ctx:
                ctx.parse(obj)
        elif version == None and parser:
            with parser(tmp, '_tmp_') as ctx:
                ctx.parse(obj)

            version = tmp['_tmp_'].__swagger_version__ if hasattr(
                tmp['_tmp_'], '__swagger_version__') else version
        else:
            raise NotImplementedError(
                'Unsupported Swagger Version: {0} from {1}'.format(
                    version, url))

        logger.info('version: {0}'.format(version))

        self.__app_cache[url] = weakref.proxy(self)  # avoid circular reference
        self.__version = version
        self.__raw = tmp['_tmp_']
コード例 #4
0
ファイル: test_utils.py プロジェクト: werwty/pyswagger
 def test_get_swagger_version(self):
     self.assertEqual(utils.get_swagger_version({'swaggerVersion': '1.2'}),
                      '1.2')
     self.assertEqual(utils.get_swagger_version({'swagger': '2.0'}), '2.0')
     self.assertEqual(utils.get_swagger_version({'qq': '20.0'}), None)
コード例 #5
0
ファイル: test_utils.py プロジェクト: pwfff/pyswagger
 def test_get_swagger_version(self):
     self.assertEqual(utils.get_swagger_version({'swaggerVersion': '1.2'}), '1.2')
     self.assertEqual(utils.get_swagger_version({'swagger': '2.0'}), '2.0')
     self.assertEqual(utils.get_swagger_version({'qq': '20.0'}), None)