mirror of
https://github.com/thegeneralist01/twitter-openapi
synced 2026-01-11 23:50:26 +01:00
update config
Signed-off-by: ふぁ <yuki@yuki0311.com>
This commit is contained in:
parent
15076eaa42
commit
ab2b0ba115
2 changed files with 95 additions and 197 deletions
|
|
@ -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),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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]],
|
||||
}
|
||||
},
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue