def parse(doc: Dict[str, Any]) -> str: """ To parse the "info" block and create Hydra Doc :param doc: the open api documentation :return: hydra doc created """ definitionSet = set() # type: Set[str] info = try_catch_replacement(doc, "info", "") global_ = dict() global_["class_names"] = definitionSet global_["doc"] = doc if info != "": desc = try_catch_replacement(info, "description", "not defined") title = try_catch_replacement(info, "title", "not defined") else: desc = "not defined" title = "not defined" print("Desc and title not present hence exit") sys.exit() baseURL = try_catch_replacement(doc, "host", "localhost") name = try_catch_replacement(doc, "basePath", "api") schemes = try_catch_replacement(doc, "schemes", "http") api_doc = HydraDoc(name, title, desc, name, schemes[0] + "://" + baseURL) get_paths(global_) for name in global_["class_names"]: for prop in global_[name]["prop_definition"]: global_[name]["class_definition"].add_supported_prop(prop) for op in global_[name]["op_definition"]: global_[name]["class_definition"].add_supported_op(op) if global_[name]["collection"] is True: if global_[name]["class_definition"].endpoint is True: global_[name]["class_definition"].endpoint = False api_doc.add_supported_class(global_[name]["class_definition"], global_[name]["collection"], collection_path=global_[name]["path"]) generateEntrypoint(api_doc) hydra_doc = api_doc.generate() dump = json.dumps(hydra_doc, indent=4, sort_keys=True) hydra_doc = '''"""\nGenerated API Documentation for Server API using server_doc_gen.py."""\n\ndoc = %s''' % dump hydra_doc = hydra_doc + '\n' hydra_doc = hydra_doc.replace('true', '"true"') hydra_doc = hydra_doc.replace('false', '"false"') hydra_doc = hydra_doc.replace('null', '"null"') return hydra_doc
def parse(doc: Dict[str, Any]) -> Dict[str, Any]: """ To parse the "info" block and create Hydra Doc :param doc: the open api documentation :return: hydra doc created """ definitionSet = set() # type: Set[str] info = try_catch_replacement(doc, "info", "") global_ = dict() global_["class_names"] = definitionSet global_["doc"] = doc if info != "": desc = try_catch_replacement(info, "description", "not defined") title = try_catch_replacement(info, "title", "not defined") else: desc = "not defined" title = "not defined" print("Desc and title not present hence exit") sys.exit() baseURL = try_catch_replacement(doc, "host", "localhost") name = try_catch_replacement(doc, "basePath", "api") schemes = try_catch_replacement(doc, "schemes", "http") api_doc = HydraDoc(name, title, desc, name, "{}://{}".format(schemes[0], baseURL)) get_paths(global_) for name in global_["class_names"]: for prop in global_[name]["prop_definition"]: global_[name]["class_definition"].add_supported_prop(prop) for op in global_[name]["op_definition"]: global_[name]["class_definition"].add_supported_op(op) if global_[name]["collection"] is True: if global_[name]["class_definition"].endpoint is True: global_[name]["class_definition"].endpoint = False api_doc.add_supported_class(global_[name]["class_definition"], global_[name]["collection"], collection_path=global_[name]["path"]) generateEntrypoint(api_doc) hydra_doc = api_doc.generate() return hydra_doc
api_doc.add_supported_class(class_2, collection=False) api_doc.add_supported_class(class_1, collection=False) # NOTE: Using collection=True creates a HydraCollection for the class. # The name of the Collection is class_.title+"Collection" # The collection inherently supports GET and PUT operations # Other operations needed for the Doc api_doc.add_baseResource( ) # Creates the base Resource Class and adds it to the API Documentation # Creates the base Collection Class and adds it to the API Documentation api_doc.add_baseCollection() # Generates the EntryPoint object for the Doc using the Classes and Collections api_doc.gen_EntryPoint() # Generate the complete API Documentation doc = api_doc.generate( ) # type: Union[Dict[str, Any], str] # Returns the entire API Documentation as a Python dict if __name__ == "__main__": """Print the complete sample Doc in doc_writer_sample_output.py.""" import json dump = json.dumps(doc, indent=4, sort_keys=True) doc = '''"""Generated API Documentation sample using doc_writer_sample.py.""" \ndoc = {}\n'''.format(dump) # Python does not recognise null, true and false in JSON format, convert # them to string doc = doc.replace('true', '"true"') doc = doc.replace('false', '"false"') doc = doc.replace('null', '"null"') f = open("doc_writer_sample_output.py", "w") f.write(doc)
"""Add the properties to the Class""" class_.add_supported_op(op1) """Add the classes to the HydraDoc""" api_doc.add_supported_class(class_, collection=True) # NOTE: Using collection=True creates a HydraCollection for the class. # The name of the Collection is class_.title+"Collection" # The collection inherently supports GET and PUT operations """Other operations needed for the Doc""" api_doc.add_baseResource( ) # Creates the base Resource Class and adds it to the API Documentation api_doc.add_baseCollection( ) # Creates the base Collection Class and adds it to the API Documentation api_doc.gen_EntryPoint( ) # Generates the EntryPoint object for the Doc using the Classes and Collections """Generate the complete API Documentation""" doc = api_doc.generate( ) # Returns the entire API Documentation as a Python dict if __name__ == "__main__": """Print the complete sample Doc in doc_writer_sample_output.py.""" import json dump = json.dumps(doc, indent=4, sort_keys=True) doc = '''"""\nGenerated API Documentation sample using doc_writer_sample.py.\n\ndoc = %s\n"""''' % dump # Python does not recognise null, true and false in JSON format, convert them to string doc = doc.replace('true', '"true"') doc = doc.replace('false', '"false"') doc = doc.replace('null', '"null"') f = open("doc_writer_sample_output.py", "w") f.write(doc) f.close()
except yaml.YAMLError as exc: print(exc) classAndClassDefinition = dict() # type: Dict[str,HydraClass] definitionSet = set() # type: Set[str] info = try_catch_replacement(doc, "info", "") if info != "": desc = try_catch_replacement(info, "description", "not defined") title = try_catch_replacement(info, "title", "not defined") else: desc = "not defined" title = "not defined" # todo throw error if desc or title dont exist baseURL = try_catch_replacement(doc, "host", "localhost") name = try_catch_replacement(doc, "basePath", "api") schemes = try_catch_replacement(doc, "schemes", "http") api_doc = HydraDoc(name, title, desc, name, schemes[0] + "://" + baseURL) get_paths(doc) hydra_doc = api_doc.generate() dump = json.dumps(hydra_doc, indent=4, sort_keys=True) hydra_doc = '''"""\nGenerated API Documentation for Server API using server_doc_gen.py."""\n\ndoc = %s''' % dump hydra_doc = hydra_doc + '\n' hydra_doc = hydra_doc.replace('true', '"true"') hydra_doc = hydra_doc.replace('false', '"false"') hydra_doc = hydra_doc.replace('null', '"null"') f = open("../samples/hydra_doc_sample.py", "w") f.write(hydra_doc) f.close()