def _prepare(self, get, admin): if not self.__class__.JSON: url = drf_reverse('api:swagger_view') + '?format=openapi' response = get(url, user=admin) data = generate_swagger_object(response.data) if response.has_header('X-Deprecated-Paths'): data['deprecated_paths'] = json.loads(response['X-Deprecated-Paths']) data.update(response.accepted_renderer.get_customizations() or {}) data['host'] = None data['schemes'] = ['https'] data['consumes'] = ['application/json'] revised_paths = {} deprecated_paths = data.pop('deprecated_paths', []) for path, node in data['paths'].items(): # change {version} in paths to the actual default API version (e.g., v2) revised_paths[path.replace('{version}', settings.REST_FRAMEWORK['DEFAULT_VERSION'])] = node for method in node: if path in deprecated_paths: node[method]['deprecated'] = True if 'description' in node[method]: # Pop off the first line and use that as the summary lines = node[method]['description'].splitlines() node[method]['summary'] = lines.pop(0).strip('#:') node[method]['description'] = '\n'.join(lines) # remove the required `version` parameter for param in node[method].get('parameters'): if param['in'] == 'path' and param['name'] == 'version': node[method]['parameters'].remove(param) data['paths'] = revised_paths self.__class__.JSON = data
def setUp(self): self.document = coreapi.Document( title='Example API', url='https://www.example.com/', description='Example description.', ) self.swagger = generate_swagger_object(self.document)
def setUp(self): self.document = coreapi.Document( title='Example API', url='https://www.example.com/', description='Example description.', ) self.swagger = generate_swagger_object(self.document)
def encode(self, document, **options): if not isinstance(document, coreapi.Document): raise TypeError('Expected a `coreapi.Document` instance') data = generate_swagger_object(document) data.update(**options) return force_bytes(json.dumps(data))
def encode(self, document, extra=None, **options): if not isinstance(document, coreapi.Document): raise TypeError('Expected a `coreapi.Document` instance') data = generate_swagger_object(document) if isinstance(extra, dict): merge_dicts(data, extra, force=True) return force_bytes(json.dumps(data))
def encode(self, document, extra=None, **options): if not isinstance(document, coreapi.Document): raise TypeError('Expected a `coreapi.Document` instance') data = generate_swagger_object(document) if isinstance(extra, dict): data.update(extra) return force_bytes(json.dumps(data))
def setUp(self): self.path = '/users/' self.document = coreapi.Document( content={ 'users': { 'create': coreapi.Link(action='post', url=self.path), 'list': coreapi.Link(action='get', url=self.path) } }) self.swagger = generate_swagger_object(self.document)
def load_swagger_json(self, doc): """ 加载自定义swagger.json文档 """ data = generate_swagger_object(doc) # data['paths'].update(path_dict.pop('paths')) # data.update(path_dict) data['paths'] = path_dict return OpenAPICodec().decode(force_bytes(json.dumps(data)))
def load_swagger_json(self, doc): """ 加载自定义swagger.json文档 """ data = generate_swagger_object(doc) with open(settings.API_DOC_PATH) as s: doc_json = json.load(s, object_pairs_hook=OrderedDict) data['paths'].update(doc_json.pop('paths')) data.update(doc_json) return OpenAPICodec().decode(force_bytes(json.dumps(data)))
def render(self, data, media_type=None, renderer_context=None): # See OpenAPICodec.encode from openapi_codec.encode import generate_swagger_object if not isinstance(data, coreapi.Document): return JSONRenderer().render(data, media_type, renderer_context) spec = generate_swagger_object(data) if self.extra is not None: spec.update(self.extra) return json.dumps(spec)
def encode(self, document, **options): import coreapi from coreapi.compat import force_bytes from openapi_codec.encode import generate_swagger_object if not isinstance(document, coreapi.Document): raise TypeError('Expected a `coreapi.Document` instance') data = generate_swagger_object(document) data.update(**options) return force_bytes(json.dumps(data))
def encode(self, document, **options): import coreapi from coreapi.compat import force_bytes from openapi_codec.encode import generate_swagger_object if not isinstance(document, coreapi.Document): raise TypeError('Expected a `coreapi.Document` instance') data = generate_swagger_object(document) data.update(**options) return force_bytes(json.dumps(data))
def encode(self, document, **options): if not isinstance(document, coreapi.Document): raise TypeError('Expected a `coreapi.Document` instance') data = generate_swagger_object(document) if settings.SECURITY_DEFINITIONS: security_key = settings.SECURITY_DEFINITIONS.keys()[0] for k1 in data['paths']: for k2 in data['paths'][k1]: data['paths'][k1][k2]['security'] = [{security_key: []}] data.update(**options) return force_bytes(json.dumps(data))
def _prepare(self, get, admin): if not self.__class__.JSON: url = drf_reverse('api:swagger_view') + '?format=openapi' response = get(url, user=admin) data = generate_swagger_object(response.data) if response.has_header('X-Deprecated-Paths'): data['deprecated_paths'] = json.loads( response['X-Deprecated-Paths']) data.update(response.accepted_renderer.get_customizations() or {}) data['host'] = None data['schemes'] = ['https'] data['consumes'] = ['application/json'] # Inject a top-level description into the OpenAPI document if os.path.exists(description_file): with open(description_file, 'r') as f: data['info']['description'] = f.read() # Write tags in the order we want them sorted if os.path.exists(config_file): with open(config_file, 'r') as f: config = yaml.load(f.read()) for category in config.get('categories', []): tag = {'name': category['name']} if 'description' in category: tag['description'] = category['description'] data.setdefault('tags', []).append(tag) revised_paths = {} deprecated_paths = data.pop('deprecated_paths', []) for path, node in data['paths'].items(): # change {version} in paths to the actual default API version (e.g., v2) revised_paths[path.replace( '{version}', settings.REST_FRAMEWORK['DEFAULT_VERSION'])] = node for method in node: if path in deprecated_paths: node[method]['deprecated'] = True if 'description' in node[method]: # Pop off the first line and use that as the summary lines = node[method]['description'].splitlines() node[method]['summary'] = lines.pop(0).strip('#:') node[method]['description'] = '\n'.join(lines) # remove the required `version` parameter for param in node[method].get('parameters'): if param['in'] == 'path' and param['name'] == 'version': node[method]['parameters'].remove(param) data['paths'] = revised_paths self.__class__.JSON = data
def setUp(self): self.path = '/users/' self.document = coreapi.Document( content={ 'users': { 'create': coreapi.Link( action='post', url=self.path ), 'list': coreapi.Link( action='get', url=self.path ) } } ) self.swagger = generate_swagger_object(self.document)
def setUp(self): self.document = coreapi.Document(title='Example API') self.swagger = generate_swagger_object(self.document)
def encode(self, document, **options): if not isinstance(document, Document): raise TypeError('Expected a `coreapi.Document` instance') data = generate_swagger_object(document) return force_bytes(json.dumps(data))
def dump(self, document, **kwargs): data = generate_swagger_object(document) return force_bytes(json.dumps(data))
def dump(self, document, **kwargs): data = generate_swagger_object(document) return force_bytes(json.dumps(data))