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}"
|
OUTPUT_DIR = "dist/{0}"
|
||||||
INPUT_DIR = "src/openapi"
|
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):
|
def main(self):
|
||||||
return {
|
return {
|
||||||
"docs": {
|
"docs": self.hooks_generator(),
|
||||||
"openapi": [AddSecuritySchemesOnSecuritySchemes()],
|
"compatible": self.hooks_generator(queryParameterJson=False),
|
||||||
"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": []},
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -169,24 +169,33 @@ class AddPathQueryIdOnParameters(RequestHookBase):
|
||||||
|
|
||||||
class AddParametersOnParameters(RequestHookBase):
|
class AddParametersOnParameters(RequestHookBase):
|
||||||
schemaType: str | None
|
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)
|
super().__init__(split=split)
|
||||||
self.schemaType = schemaType
|
self.schemaType = schemaType
|
||||||
|
self.ignoreKeys = ignoreKeys or []
|
||||||
|
|
||||||
def hook(self, path: str, value: dict):
|
def hook(self, path: str, value: dict):
|
||||||
path, value = super().hook(path, value)
|
path, value = super().hook(path, value)
|
||||||
data = self.PLACEHOLDER[self.path_name]
|
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():
|
for key in data.keys():
|
||||||
if self.schemaType == "string":
|
if self.schemaType == "string":
|
||||||
example = json.dumps(data[key])
|
example = data[key] if type(data[key]) is str else json.dumps(data[key])
|
||||||
schema = {
|
schema = {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"default": example,
|
"default": example,
|
||||||
"example": example,
|
"example": example,
|
||||||
}
|
}
|
||||||
elif self.schemaType == "object":
|
elif self.schemaType == "object":
|
||||||
example = json.dumps(data[key])
|
example = data[key] if type(data[key]) is str else json.dumps(data[key])
|
||||||
schema = {
|
schema = {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"default": example,
|
"default": example,
|
||||||
|
|
@ -211,30 +220,34 @@ class AddParametersOnParameters(RequestHookBase):
|
||||||
class AddParametersOnBody(RequestHookBase):
|
class AddParametersOnBody(RequestHookBase):
|
||||||
schemaType: str | None
|
schemaType: str | None
|
||||||
contentType: str | None
|
contentType: str | None
|
||||||
|
ignoreKeys: list[str]
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
split: str = 1,
|
split: str = 1,
|
||||||
contentType: str = "application/json",
|
contentType: str = "application/json",
|
||||||
schemaType: str | None = None,
|
schemaType: str | None = None,
|
||||||
|
ignoreKeys: list[str] | None = None,
|
||||||
):
|
):
|
||||||
super().__init__(split)
|
super().__init__(split)
|
||||||
self.schemaType = schemaType
|
self.schemaType = schemaType
|
||||||
self.contentType = contentType
|
self.contentType = contentType
|
||||||
|
self.ignoreKeys = ignoreKeys or []
|
||||||
|
|
||||||
def hook(self, path: str, value: dict):
|
def hook(self, path: str, value: dict):
|
||||||
path, value = super().hook(path, value)
|
path, value = super().hook(path, value)
|
||||||
data = self.PLACEHOLDER[self.path_name]
|
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":
|
if self.schemaType == "string":
|
||||||
example = json.dumps(data)
|
example = data if type(data) is str else json.dumps(data)
|
||||||
schema = {
|
schema = {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"default": example,
|
"default": example,
|
||||||
"example": example,
|
"example": example,
|
||||||
}
|
}
|
||||||
elif self.schemaType == "object":
|
elif self.schemaType == "object":
|
||||||
example = json.dumps(data)
|
example = data if type(data) is str else json.dumps(data)
|
||||||
schema = {
|
schema = {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"default": example,
|
"default": example,
|
||||||
|
|
@ -264,14 +277,23 @@ class AddParametersOnBody(RequestHookBase):
|
||||||
|
|
||||||
class AddParametersOnContent(RequestHookBase):
|
class AddParametersOnContent(RequestHookBase):
|
||||||
contentType: str
|
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)
|
super().__init__(split=split)
|
||||||
self.contentType = contentType
|
self.contentType = contentType
|
||||||
|
self.ignoreKeys = ignoreKeys or []
|
||||||
|
|
||||||
def hook(self, path: str, value: dict):
|
def hook(self, path: str, value: dict):
|
||||||
path, value = super().hook(path, value)
|
path, value = super().hook(path, value)
|
||||||
data = self.PLACEHOLDER[self.path_name]
|
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():
|
for key in data.keys():
|
||||||
value["parameters"].append(
|
value["parameters"].append(
|
||||||
{
|
{
|
||||||
|
|
@ -281,7 +303,6 @@ class AddParametersOnContent(RequestHookBase):
|
||||||
"content": {
|
"content": {
|
||||||
self.contentType: {
|
self.contentType: {
|
||||||
"schema": self.placeholder_to_yaml(data[key]),
|
"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