| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -8,7 +8,7 @@ | |||
| 8 | 8 | from openapi_codec.decode import _parse_document | |
| 9 | 9 | ||
| 10 | 10 | ||
| 11 | - __version__ = '1.1.2' | ||
| 11 | + __version__ = '1.1.3' | ||
| 12 | 12 | ||
| 13 | 13 | ||
| 14 | 14 | class OpenAPICodec(BaseCodec): | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,3 +1,4 @@ | |||
| 1 | + from collections import OrderedDict | ||
| 1 | 2 | from coreapi.compat import urlparse | |
| 2 | 3 | from openapi_codec.utils import get_method, get_encoding, get_location, get_links_from_document | |
| 3 | 4 | ||
@@ -8,20 +9,20 @@ def generate_swagger_object(document): | |||
| 8 | 9 | """ | |
| 9 | 10 | parsed_url = urlparse.urlparse(document.url) | |
| 10 | 11 | ||
| 11 | - swagger = { | ||
| 12 | - 'swagger': '2.0', | ||
| 13 | - 'info': { | ||
| 14 | - 'title': document.title, | ||
| 15 | - 'version': '' # Required by the spec | ||
| 16 | - }, | ||
| 17 | - 'paths': _get_paths_object(document) | ||
| 18 | - } | ||
| 12 | + swagger = OrderedDict() | ||
| 13 | + | ||
| 14 | + swagger['swagger'] = '2.0' | ||
| 15 | + swagger['info'] = OrderedDict() | ||
| 16 | + swagger['info']['title'] = document.title | ||
| 17 | + swagger['info']['version'] = '' # Required by the spec | ||
| 19 | 18 | ||
| 20 | 19 | if parsed_url.netloc: | |
| 21 | 20 | swagger['host'] = parsed_url.netloc | |
| 22 | 21 | if parsed_url.scheme: | |
| 23 | 22 | swagger['schemes'] = [parsed_url.scheme] | |
| 24 | 23 | ||
| 24 | + swagger['paths'] = _get_paths_object(document) | ||
| 25 | + | ||
| 25 | 26 | return swagger | |
| 26 | 27 | ||
| 27 | 28 | ||
@@ -59,7 +60,7 @@ def _get_links(document): | |||
| 59 | 60 | ||
| 60 | 61 | ||
| 61 | 62 | def _get_paths_object(document): | |
| 62 | - paths = {} | ||
| 63 | + paths = OrderedDict() | ||
| 63 | 64 | ||
| 64 | 65 | links = _get_links(document) | |
| 65 | 66 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,3 +1,15 @@ | |||
| 1 | + def link_sorting_key(link_item): | ||
| 2 | + keys, link = link_item | ||
| 3 | + action_priority = { | ||
| 4 | + '': 0, 'get': 0, | ||
| 5 | + 'post': 1, | ||
| 6 | + 'put': 2, | ||
| 7 | + 'patch': 3, | ||
| 8 | + 'delete': 4 | ||
| 9 | + }.get(link.action, 5) | ||
| 10 | + return (link.url, action_priority) | ||
| 11 | + | ||
| 12 | + | ||
| 1 | 13 | def get_links_from_document(node, keys=()): | |
| 2 | 14 | links = [] | |
| 3 | 15 | for key, link in getattr(node, 'links', {}).items(): | |
@@ -8,7 +20,7 @@ def get_links_from_document(node, keys=()): | |||
| 8 | 20 | # Descend into any nested structures. | |
| 9 | 21 | index = keys + (key,) | |
| 10 | 22 | links.extend(get_links_from_document(child, index)) | |
| 11 | - return links | ||
| 23 | + return sorted(links, key=link_sorting_key) | ||
| 12 | 24 | ||
| 13 | 25 | ||
| 14 | 26 | def get_method(link): | |
| Back | FazBrowse Home | New Git URL |
0 commit comments