From 573f32dfa1b7286b30f885534f3554f52dc78940 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Tue, 29 Nov 2016 13:54:33 +0000 Subject: [PATCH] Version 1.2.0 --- openapi_codec/__init__.py | 2 +- openapi_codec/decode.py | 24 ++++++++++++++++-------- setup.py | 2 +- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/openapi_codec/__init__.py b/openapi_codec/__init__.py index c5361e9..2c803f4 100644 --- a/openapi_codec/__init__.py +++ b/openapi_codec/__init__.py @@ -8,7 +8,7 @@ from openapi_codec.decode import _parse_document -__version__ = '1.1.7' +__version__ = '1.2.0' class OpenAPICodec(BaseCodec): diff --git a/openapi_codec/decode.py b/openapi_codec/decode.py index 3e55f77..747263b 100644 --- a/openapi_codec/decode.py +++ b/openapi_codec/decode.py @@ -8,6 +8,7 @@ def _parse_document(data, base_url=None): base_url = _get_document_base_url(data, base_url) info = _get_dict(data, 'info') title = _get_string(info, 'title') + description = _get_string(info, 'description') consumes = get_strings(_get_list(data, 'consumes')) paths = _get_dict(data, 'paths') content = {} @@ -21,9 +22,6 @@ def _parse_document(data, base_url=None): continue operation = _get_dict(spec, action) - link_description = _get_string(operation, 'description') - link_consumes = get_strings(_get_list(operation, 'consumes', consumes)) - # Determine any fields on the link. has_body = False has_form = False @@ -34,7 +32,6 @@ def _parse_document(data, base_url=None): name = _get_string(parameter, 'name') location = _get_string(parameter, 'in') required = _get_bool(parameter, 'required', default=(location == 'path')) - description = _get_string(parameter, 'description') if location == 'body': has_body = True schema = _get_dict(parameter, 'schema', dereference_using=data) @@ -47,22 +44,27 @@ def _parse_document(data, base_url=None): ] fields += expanded_fields else: - field = Field(name=name, location='body', required=required, description=description) + field_description = _get_string(parameter, 'description') + field = Field(name=name, location='body', required=required, description=field_description) fields.append(field) else: if location == 'formData': has_form = True location = 'form' - field = Field(name=name, location=location, required=required, description=description) + field_description = _get_string(parameter, 'description') + field = Field(name=name, location=location, required=required, description=field_description) fields.append(field) + link_consumes = get_strings(_get_list(operation, 'consumes', consumes)) encoding = '' if has_body: encoding = _select_encoding(link_consumes) elif has_form: encoding = _select_encoding(link_consumes, form=True) - link = Link(url=url, action=action, encoding=encoding, fields=fields, description=link_description) + link_title = _get_string(operation, 'summary') + link_description = _get_string(operation, 'description') + link = Link(url=url, action=action, encoding=encoding, fields=fields, title=link_title, description=link_description) # Add the link to the document content. tags = get_strings(_get_list(operation, 'tags')) @@ -78,7 +80,13 @@ def _parse_document(data, base_url=None): else: content[operation_id] = link - return Document(url=schema_url, title=title, content=content) + return Document( + url=schema_url, + title=title, + description=description, + content=content, + media_type='application/openapi+json' + ) def _get_document_base_url(data, base_url=None): diff --git a/setup.py b/setup.py index 2b99dfa..85cf22d 100755 --- a/setup.py +++ b/setup.py @@ -61,7 +61,7 @@ def get_package_data(package): author_email='tom@tomchristie.com', packages=get_packages('openapi_codec'), package_data=get_package_data('openapi_codec'), - install_requires=['coreapi'], + install_requires=['coreapi>=2.1.0'], classifiers=[ 'Intended Audience :: Developers', 'License :: OSI Approved :: BSD License',