mirror of https://github.com/arc53/DocsGPT
Made changes
parent
8ebff1a908
commit
889ce984a9
@ -0,0 +1,51 @@
|
|||||||
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
|
from openapi_parser import parse
|
||||||
|
|
||||||
|
try:
|
||||||
|
from scripts.parser.file.base_parser import BaseParser
|
||||||
|
except ModuleNotFoundError:
|
||||||
|
from base_parser import BaseParser
|
||||||
|
|
||||||
|
|
||||||
|
class OpenAPI3Parser(BaseParser):
|
||||||
|
def init_parser(self) -> None:
|
||||||
|
return super().init_parser()
|
||||||
|
|
||||||
|
def get_base_urls(self, urls):
|
||||||
|
base_urls = []
|
||||||
|
for i in urls:
|
||||||
|
parsed_url = urlparse(i)
|
||||||
|
base_url = parsed_url.scheme + "://" + parsed_url.netloc
|
||||||
|
if base_url not in base_urls:
|
||||||
|
base_urls.append(base_url)
|
||||||
|
return base_urls
|
||||||
|
|
||||||
|
def get_info_from_paths(self, path):
|
||||||
|
info = ""
|
||||||
|
if path.operations:
|
||||||
|
for operation in path.operations:
|
||||||
|
info += (
|
||||||
|
f"\n{operation.method.value}="
|
||||||
|
f"{operation.responses[0].description}"
|
||||||
|
)
|
||||||
|
return info
|
||||||
|
|
||||||
|
def parse_file(self, file_path):
|
||||||
|
data = parse(file_path)
|
||||||
|
results = ""
|
||||||
|
base_urls = self.get_base_urls(link.url for link in data.servers)
|
||||||
|
base_urls = ",".join([base_url for base_url in base_urls])
|
||||||
|
results += f"Base URL:{base_urls}\n"
|
||||||
|
i = 1
|
||||||
|
for path in data.paths:
|
||||||
|
info = self.get_info_from_paths(path)
|
||||||
|
results += (
|
||||||
|
f"Path{i}: {path.url}\n"
|
||||||
|
f"description: {path.description}\n"
|
||||||
|
f"parameters: {path.parameters}\nmethods: {info}\n"
|
||||||
|
)
|
||||||
|
i += 1
|
||||||
|
with open("results.txt", "w") as f:
|
||||||
|
f.write(results)
|
||||||
|
return results
|
Loading…
Reference in New Issue