tornado_swagger_ui support query operation in "GET" method, and support methods in...
[releng.git] / utils / test / result_collection_api / tornado_swagger_ui / tornado_swagger / swagger.py
index 0939b0d..50b2cfe 100644 (file)
@@ -64,6 +64,8 @@ class DocParser(object):
         parser = {
             'param': self._parse_param,
             'type': self._parse_type,
+            'in': self._parse_in,
+            'required': self._parse_required,
             'rtype': self._parse_rtype,
             'property': self._parse_property,
             'ptype': self._parse_ptype,
@@ -80,9 +82,6 @@ class DocParser(object):
         self.params.setdefault(arg, {}).update({
             'name': arg,
             'description': body,
-            'paramType': arg,
-            'required': True,
-            'allowMultiple': False
         })
 
         if 'paramType' not in self.params[arg]:
@@ -96,6 +95,22 @@ class DocParser(object):
             'dataType': body
         })
 
+    def _parse_in(self, **kwargs):
+        arg = kwargs.get('arg', None)
+        body = self._get_body(**kwargs)
+        self.params.setdefault(arg, {}).update({
+            'name': arg,
+            'paramType': body
+        })
+
+    def _parse_required(self, **kwargs):
+        arg = kwargs.get('arg', None)
+        body = self._get_body(**kwargs)
+        self.params.setdefault(arg, {}).update({
+            'name': arg,
+            'required': False if body in ['False', 'false'] else True
+        })
+
     def _parse_rtype(self, **kwargs):
         body = self._get_body(**kwargs)
         self.responseClass = body
@@ -162,13 +177,25 @@ class DocParser(object):
 
 
 class model(DocParser):
-    def __init__(self, cls=None, *args, **kwargs):
+    def __init__(self, *args, **kwargs):
         super(model, self).__init__()
-        self.id = cls.__name__
         self.args = args
         self.kwargs = kwargs
         self.required = []
+        self.cls = None
+
+    def __call__(self, *args, **kwargs):
+        if self.cls:
+            return self.cls
 
+        cls = args[0]
+        self._parse_model(cls)
+
+        return cls
+
+    def _parse_model(self, cls):
+        self.id = cls.__name__
+        self.cls = cls
         if '__init__' in dir(cls):
             self._parse_args(cls.__init__)
         self.parse_docstring(inspect.getdoc(cls))
@@ -188,7 +215,6 @@ class model(DocParser):
             self.properties.setdefault(arg, {'type': 'string', "default": default})
 
 
-
 class operation(DocParser):
     def __init__(self, nickname=None, **kwds):
         super(operation, self).__init__()