1
Fork 0
mirror of https://github.com/thegeneralist01/twitter-openapi synced 2026-01-11 15:40:26 +01:00

update config

Signed-off-by: ふぁ <yuki@yuki0311.com>
This commit is contained in:
ふぁ 2023-06-14 18:04:59 +09:00
parent 15076eaa42
commit ab2b0ba115
No known key found for this signature in database
GPG key ID: 83A8A5E74872A8AA
2 changed files with 95 additions and 197 deletions

View file

@ -5,196 +5,73 @@ class Config:
OUTPUT_DIR = "dist/{0}"
INPUT_DIR = "src/openapi"
def hooks_generator(self, queryParameterJson=True):
# https://stackoverflow.com/questions/34820064/defining-an-api-with-swagger-get-call-that-uses-json-in-parameters/45223964
if queryParameterJson:
getParamHook = AddParametersOnContent(
split=-1,
contentType="application/json",
ignoreKeys=["queryId"],
)
postParamHook = AddParametersOnParameters(
split=-1,
schemaType=None,
)
else:
getParamHook = AddParametersOnParameters(
split=-1,
schemaType="string",
ignoreKeys=["queryId"],
)
postParamHook = AddParametersOnBody(
split=-1,
schemaType=None,
contentType="application/json",
)
return {
"openapi": [AddSecuritySchemesOnSecuritySchemes()],
"schemas": [],
"other": [],
"request": {
key: [
SetResponsesHeader(suffix=None),
AddPathQueryIdOnParameters(split=-1),
getParamHook,
]
for key in ["default", "user", "user-list", "tweet"]
}
| {
key: [
SetResponsesHeader(suffix=None),
AddPathQueryIdOnParameters(split=-1),
postParamHook,
]
for key in ["post"]
}
| {
key: [
SetResponsesHeader(suffix="legacy"),
AddParametersOnParameters(split=2, schemaType=None),
]
for key in ["v1.1-get", "v2.0-get"]
}
| {
key: [
SetResponsesHeader(suffix="legacy"),
AddParametersOnBody(
split=2,
schemaType=None,
contentType="application/x-www-form-urlencoded",
),
]
for key in ["v1.1-post", "v2.0-post"]
}
| {"other": []},
}
def main(self):
return {
"docs": {
"openapi": [AddSecuritySchemesOnSecuritySchemes()],
"schemas": [],
"other": [],
"request": {
key: [
SetResponsesHeader(suffix=None),
AddPathQueryIdOnParameters(split=-1),
AddParametersOnContent(
split=-1, contentType="application/json"
),
]
for key in ["default", "user", "user-list", "tweet"]
}
| {
key: [
SetResponsesHeader(suffix=None),
AddPathQueryIdOnParameters(split=-1),
AddParametersOnParameters(
split=-1,
schemaType=None,
),
]
for key in ["post"]
}
| {
key: [
SetResponsesHeader(suffix="legacy"),
AddParametersOnParameters(
split=2,
schemaType=None,
),
]
for key in ["v1.1-get", "v2.0-get"]
}
| {
key: [
SetResponsesHeader(suffix="legacy"),
AddParametersOnBody(
split=2,
schemaType=None,
contentType="application/x-www-form-urlencoded",
),
]
for key in ["v1.1-post", "v2.0-post"]
}
| {"other": []},
},
"dart": {
"openapi": [],
"schemas": [],
"other": [],
"request": {
key: [
AddSecuritySchemesOnHeader(split=-1),
SetResponsesHeader(suffix=None),
AddPathQueryIdOnParameters(split=-1),
AddParametersOnParameters(
split=-1,
schemaType="string",
),
]
for key in ["default", "user", "user-list", "tweet"]
}
| {
key: [
AddSecuritySchemesOnHeader(split=-1),
SetResponsesHeader(suffix=None),
AddPathQueryIdOnParameters(split=-1),
AddParametersOnBody(
split=-1,
schemaType=None,
contentType="application/json",
),
]
for key in ["post"]
}
| {
key: [
SetResponsesHeader(suffix="legacy"),
AddSecuritySchemesOnHeader(split=-1),
AddParametersOnParameters(
split=2,
schemaType=None,
),
]
for key in ["v1.1-get", "v2.0-get"]
}
| {
key: [
SetResponsesHeader(suffix="legacy"),
AddSecuritySchemesOnHeader(split=-1),
AddParametersOnBody(
split=2,
schemaType=None,
contentType="application/x-www-form-urlencoded",
),
]
for key in ["v1.1-post", "v2.0-post"]
}
| {"other": []},
},
"typescript": {
"openapi": [AddSecuritySchemesOnSecuritySchemes()],
"schemas": [],
"other": [],
"request": {
key: [
SetResponsesHeader(suffix=None),
AddPathQueryIdOnParameters(split=-1),
AddParametersOnParameters(
split=-1,
schemaType="string",
),
]
for key in ["default", "user", "user-list", "tweet"]
}
| {
key: [
SetResponsesHeader(suffix=None),
AddPathQueryIdOnParameters(split=-1),
AddParametersOnBody(
split=-1,
schemaType=None,
contentType="application/json",
),
]
for key in ["post"]
}
| {
key: [
SetResponsesHeader(suffix="legacy"),
AddParametersOnParameters(
split=2,
schemaType=None,
),
]
for key in ["v1.1-get", "v2.0-get"]
}
| {
key: [
SetResponsesHeader(suffix="legacy"),
AddParametersOnBody(
split=2,
schemaType=None,
contentType="application/x-www-form-urlencoded",
),
]
for key in ["v1.1-post", "v2.0-post"]
}
| {"other": []},
},
"test": {
"openapi": [AddSecuritySchemesOnSecuritySchemes()],
"schemas": [],
"other": [],
"request": {
key: [
SetResponsesHeader(suffix=None),
AddPathQueryIdOnParameters(split=-1),
AddParametersOnParameters(
split=-1,
schemaType="string",
),
]
for key in ["default", "user", "user-list", "tweet"]
}
| {
key: [
SetResponsesHeader(suffix=None),
AddPathQueryIdOnParameters(split=-1),
AddParametersOnParameters(
split=-1,
schemaType="string",
),
]
for key in ["post"]
}
| {
key: [
SetResponsesHeader(suffix="legacy"),
AddParametersOnParameters(
split=2,
schemaType="object",
),
]
for key in ["v1.1-get", "v1.1-post", "v2.0-get", "v2.0-post"]
}
| {"other": []},
},
"docs": self.hooks_generator(),
"compatible": self.hooks_generator(queryParameterJson=False),
}

View file

@ -169,24 +169,33 @@ class AddPathQueryIdOnParameters(RequestHookBase):
class AddParametersOnParameters(RequestHookBase):
schemaType: str | None
ignoreKeys: list[str]
def __init__(self, split: str = 1, schemaType: str | None = None):
def __init__(
self,
split: str = 1,
schemaType: str | None = None,
ignoreKeys: list[str] | None = None,
):
super().__init__(split=split)
self.schemaType = schemaType
self.ignoreKeys = ignoreKeys or []
def hook(self, path: str, value: dict):
path, value = super().hook(path, value)
data = self.PLACEHOLDER[self.path_name]
data = {key: data[key] for key in data.keys() if key not in self.ignoreKeys}
for key in data.keys():
if self.schemaType == "string":
example = json.dumps(data[key])
example = data[key] if type(data[key]) is str else json.dumps(data[key])
schema = {
"type": "string",
"default": example,
"example": example,
}
elif self.schemaType == "object":
example = json.dumps(data[key])
example = data[key] if type(data[key]) is str else json.dumps(data[key])
schema = {
"type": "object",
"default": example,
@ -211,30 +220,34 @@ class AddParametersOnParameters(RequestHookBase):
class AddParametersOnBody(RequestHookBase):
schemaType: str | None
contentType: str | None
ignoreKeys: list[str]
def __init__(
self,
split: str = 1,
contentType: str = "application/json",
schemaType: str | None = None,
ignoreKeys: list[str] | None = None,
):
super().__init__(split)
self.schemaType = schemaType
self.contentType = contentType
self.ignoreKeys = ignoreKeys or []
def hook(self, path: str, value: dict):
path, value = super().hook(path, value)
data = self.PLACEHOLDER[self.path_name]
data = {key: data[key] for key in data.keys() if key not in self.ignoreKeys}
if self.schemaType == "string":
example = json.dumps(data)
example = data if type(data) is str else json.dumps(data)
schema = {
"type": "string",
"default": example,
"example": example,
}
elif self.schemaType == "object":
example = json.dumps(data)
example = data if type(data) is str else json.dumps(data)
schema = {
"type": "object",
"default": example,
@ -264,14 +277,23 @@ class AddParametersOnBody(RequestHookBase):
class AddParametersOnContent(RequestHookBase):
contentType: str
ignoreKeys: list[str]
def __init__(self, split: str = 1, contentType: str = "application/json"):
def __init__(
self,
split: str = 1,
contentType: str = "application/json",
ignoreKeys: list[str] | None = None,
):
super().__init__(split=split)
self.contentType = contentType
self.ignoreKeys = ignoreKeys or []
def hook(self, path: str, value: dict):
path, value = super().hook(path, value)
data = self.PLACEHOLDER[self.path_name]
data = {key: data[key] for key in data.keys() if key not in self.ignoreKeys}
for key in data.keys():
value["parameters"].append(
{
@ -281,7 +303,6 @@ class AddParametersOnContent(RequestHookBase):
"content": {
self.contentType: {
"schema": self.placeholder_to_yaml(data[key]),
"required": [i for i in data[key]],
}
},
}