This library contains the OpenAPI parser implemntaion in Python to be used with hydrus
and hydra-python-agent
.
Currently the library consists of openapi_parser module which helps hydrus parse OpenAPI standard docs.
To install the library:
pip install git+https://github.com/HTTP-APIs/hydra-openapi-parser.git#egg=hydra_openapi_parser
Note :- If using hydrus, the library doesn't need to be installed separately as it is already a part of requirements.txt for hydrus. Usage
To import the modules:
from hydra_openapi_parser import openapi_parser
Porting out from hydrus the hydraspecs directory
Once the OpenAPI YAML document is assigned into the variable doc
as a Python dictionary, you can do the following:
- Parse the OpenAPI doc into a HydraDoc
parsed_dict = openapi_parser.parse(doc)
- Generate an empty object
object = openapi_parser.generate_empty_object()
- Test if an endpoint is valid
path = 'A/B/{id}/C/D'
openapi_parser.valid_endpoint(path)
# False
path = 'A/B/{id}'
openapi_parser.valid_endpoint(path)
# Collection
path = 'A/B/C'
openapi_parser.valid_endpoint(path)
# True
- Extract class name from the path
path = "A/B/C/Pet"
path_list = path.split('/')
openapi_parser.get_class_name(path_list)
# Pet
- Fetch data from location
path = '#/definitions/Order'
path_list = path.split('/')
data = openapi_parser.get_data_at_location(path_list, doc)
# data is of type dict
- Remove variables from path
path = "A/B/C/{id}"
output = openapi_parser.sanitise_path(path)
- Identify if an object is a collection
schema_block = {
'type': 'array',
'items': {
'$ref': '#/definitions/Pet'
}
}
method = "/Pet"
openapi_parser.check_collection(schema_block, method)
# True