argus_api.parsers package¶
Submodules¶
argus_api.parsers.openapi2 module¶
-
class
argus_api.parsers.openapi2.
Swagger2RequestMethod
(url: str, name: str, method: str, description: str, parameters: dict, response: list = None, errors: list = None)[source]¶ Bases:
argus_api.helpers.parsers.RequestMethod
Structure for a request method, allowing it to be passed to a template, create mocks for tests, or spit out defined functions
-
static
from_swagger_definition
(api_url: str, endpoint_url: str, method: str, definition: dict) → argus_api.parsers.openapi2.Swagger2RequestMethod[source]¶ Creates request methods from their Swagger definitions
Parameters: - api_url (str) – API base url
- endpoint_url (str) – URL to API endpoint
- method (str) – GET / POST / PUT / PATCH / DELETE
- definition (dict) – Method definition
-
static
-
argus_api.parsers.openapi2.
add_endpoints
(cls, endpoints)[source]¶ Adds endpoint functions to a class, and adds bridging classes in between
Parameters: - cls (class) – Class to add functions/classes to
- endpoints (dict) – Endpoints to add
-
argus_api.parsers.openapi2.
flatten
(nested_list: list) → list[source]¶ Generator that flattens lists inside a list
-
argus_api.parsers.openapi2.
load
(location: str) → dict[source]¶ This is the main entry point of the OpenAPI2 parser. It loads the given OpenAPI 2.0 definition, and makes sure it’s saved to disk, and that references are resolved, and javascript type names replaced with Python type names.
It’ll then begin setting up the nested endpoint structure, and create RequestMethods for each API endpoint before loading these as templates.
The returned structure will be a nested dict representing the paths to each endpoint, where some dicts (the actual endpoints) will contain keys with metadata such as [“__METADATA__”][“__MODULE_NAME__”] and other useful data.
It’s up to the application to make use of these endpoints, e.g call nested_dict_structure_to_class_structure(endpoints), or whatever else you may want to do with these.
If the endpoint structure has been loaded previously, the already loaded structure will be returned.
-
argus_api.parsers.openapi2.
recursively_flatten_properties
(schema, recursion_limit=100)[source]¶ Recursively flattens all ‘properties’ keys in the schema, to avoid unnecessary and unwanted nesting
Parameters: schema – Any value it comes across while recursing
-
argus_api.parsers.openapi2.
recursively_replace_types_with_pythonic_types
(schema, recursion_limit: int = 100)[source]¶ Recurses through a nested dict, looking for keys ‘type’, and ‘format’. The “format” key will be removed as it’s superfluous, and the “type” key will have its value replaced with the Python equivalent of that type.
Parameters: - schema (dict) – Will be the root dictionary at the start
- recursion_limit (int) – Limits recursion to avoid maximum recursion depth
-
argus_api.parsers.openapi2.
recursively_resolve_references
(reference: jsonschema.validators.RefResolver, value, recursion_limit: int = 10)[source]¶ Recursively iterates through the swagger schema and resolves JSON references
Parameters: - reference (RefResolver) – A RefResolver object used to resolve references
- value – Any value it comes across - starting with the schema object root
Returns: