Module ro_py.robloxdocs
This file houses functions and classes that pertain to the Roblox API documentation pages. I don't know if this is really that useful, but it might be useful for an API browser program, or for accessing endpoints that aren't supported directly by ro.py yet.
Expand source code
"""
This file houses functions and classes that pertain to the Roblox API documentation pages.
I don't know if this is really that useful, but it might be useful for an API browser program, or for accessing
endpoints that aren't supported directly by ro.py yet.
"""
from lxml import html
from io import StringIO
class EndpointDocsPathRequestTypeProperties:
def __init__(self, data):
self.internal = data["internal"]
self.metric_ids = data["metricIds"]
class EndpointDocsPathRequestTypeResponse:
def __init__(self, data):
self.description = None
self.schema = None
if "description" in data:
self.description = data["description"]
if "schema" in data:
self.schema = data["schema"]
class EndpointDocsPathRequestTypeParameter:
def __init__(self, data):
self.name = data["name"]
self.iin = data["in"] # I can't make this say "in" so this is close enough
if "description" in data:
self.description = data["description"]
else:
self.description = None
self.required = data["required"]
self.type = None
if "type" in data:
self.type = data["type"]
if "format" in data:
self.format = data["format"]
else:
self.format = None
class EndpointDocsPathRequestType:
def __init__(self, data):
self.tags = data["tags"]
self.description = None
self.summary = None
if "summary" in data:
self.summary = data["summary"]
if "description" in data:
self.description = data["description"]
self.consumes = data["consumes"]
self.produces = data["produces"]
self.parameters = []
self.responses = {}
self.properties = EndpointDocsPathRequestTypeProperties(data["properties"])
for raw_parameter in data["parameters"]:
self.parameters.append(EndpointDocsPathRequestTypeParameter(raw_parameter))
for rr_k, rr_v in data["responses"].items():
self.responses[rr_k] = EndpointDocsPathRequestTypeResponse(rr_v)
class EndpointDocsPath:
def __init__(self, data):
self.data = {}
for type_k, type_v in data.items():
self.data[type_k] = EndpointDocsPathRequestType(type_v)
class EndpointDocsDataInfo:
def __init__(self, data):
self.version = data["version"]
self.title = data["title"]
class EndpointDocsData:
def __init__(self, data):
self.swagger_version = data["swagger"]
self.info = EndpointDocsDataInfo(data["info"])
self.host = data["host"]
self.schemes = data["schemes"]
self.paths = {}
for path_k, path_v in data["paths"].items():
self.paths[path_k] = EndpointDocsPath(path_v)
class EndpointDocs:
def __init__(self, requests, docs_url):
self.requests = requests
self.url = docs_url
async def get_versions(self):
docs_req = await self.requests.get(self.url + "/docs")
root = html.parse(StringIO(docs_req.text)).getroot()
try:
vs_element = root.get_element_by_id("version-selector")
return vs_element.value_options
except KeyError:
return ["v1"]
async def get_data_for_version(self, version):
data_req = await self.requests.get(self.url + "/docs/json/" + version)
version_data = data_req.json()
return EndpointDocsData(version_data)
Classes
class EndpointDocs (requests, docs_url)
-
Expand source code
class EndpointDocs: def __init__(self, requests, docs_url): self.requests = requests self.url = docs_url async def get_versions(self): docs_req = await self.requests.get(self.url + "/docs") root = html.parse(StringIO(docs_req.text)).getroot() try: vs_element = root.get_element_by_id("version-selector") return vs_element.value_options except KeyError: return ["v1"] async def get_data_for_version(self, version): data_req = await self.requests.get(self.url + "/docs/json/" + version) version_data = data_req.json() return EndpointDocsData(version_data)
Methods
async def get_data_for_version(self, version)
-
Expand source code
async def get_data_for_version(self, version): data_req = await self.requests.get(self.url + "/docs/json/" + version) version_data = data_req.json() return EndpointDocsData(version_data)
async def get_versions(self)
-
Expand source code
async def get_versions(self): docs_req = await self.requests.get(self.url + "/docs") root = html.parse(StringIO(docs_req.text)).getroot() try: vs_element = root.get_element_by_id("version-selector") return vs_element.value_options except KeyError: return ["v1"]
class EndpointDocsData (data)
-
Expand source code
class EndpointDocsData: def __init__(self, data): self.swagger_version = data["swagger"] self.info = EndpointDocsDataInfo(data["info"]) self.host = data["host"] self.schemes = data["schemes"] self.paths = {} for path_k, path_v in data["paths"].items(): self.paths[path_k] = EndpointDocsPath(path_v)
class EndpointDocsDataInfo (data)
-
Expand source code
class EndpointDocsDataInfo: def __init__(self, data): self.version = data["version"] self.title = data["title"]
class EndpointDocsPath (data)
-
Expand source code
class EndpointDocsPath: def __init__(self, data): self.data = {} for type_k, type_v in data.items(): self.data[type_k] = EndpointDocsPathRequestType(type_v)
class EndpointDocsPathRequestType (data)
-
Expand source code
class EndpointDocsPathRequestType: def __init__(self, data): self.tags = data["tags"] self.description = None self.summary = None if "summary" in data: self.summary = data["summary"] if "description" in data: self.description = data["description"] self.consumes = data["consumes"] self.produces = data["produces"] self.parameters = [] self.responses = {} self.properties = EndpointDocsPathRequestTypeProperties(data["properties"]) for raw_parameter in data["parameters"]: self.parameters.append(EndpointDocsPathRequestTypeParameter(raw_parameter)) for rr_k, rr_v in data["responses"].items(): self.responses[rr_k] = EndpointDocsPathRequestTypeResponse(rr_v)
class EndpointDocsPathRequestTypeParameter (data)
-
Expand source code
class EndpointDocsPathRequestTypeParameter: def __init__(self, data): self.name = data["name"] self.iin = data["in"] # I can't make this say "in" so this is close enough if "description" in data: self.description = data["description"] else: self.description = None self.required = data["required"] self.type = None if "type" in data: self.type = data["type"] if "format" in data: self.format = data["format"] else: self.format = None
class EndpointDocsPathRequestTypeProperties (data)
-
Expand source code
class EndpointDocsPathRequestTypeProperties: def __init__(self, data): self.internal = data["internal"] self.metric_ids = data["metricIds"]
class EndpointDocsPathRequestTypeResponse (data)
-
Expand source code
class EndpointDocsPathRequestTypeResponse: def __init__(self, data): self.description = None self.schema = None if "description" in data: self.description = data["description"] if "schema" in data: self.schema = data["schema"]