mirror of
https://github.com/thegeneralist01/twitter-openapi
synced 2026-01-11 23:50:26 +01:00
commit
b4389178cb
6 changed files with 69 additions and 23 deletions
15
dist/compatible/openapi-3.0.yaml
vendored
15
dist/compatible/openapi-3.0.yaml
vendored
|
|
@ -1270,6 +1270,7 @@ components:
|
||||||
enum:
|
enum:
|
||||||
- Vertical
|
- Vertical
|
||||||
- VerticalConversation
|
- VerticalConversation
|
||||||
|
- Carousel
|
||||||
type: string
|
type: string
|
||||||
entryType:
|
entryType:
|
||||||
$ref: '#/components/schemas/ContentEntryType'
|
$ref: '#/components/schemas/ContentEntryType'
|
||||||
|
|
@ -3238,6 +3239,20 @@ paths:
|
||||||
- media_entities
|
- media_entities
|
||||||
- possibly_sensitive
|
- possibly_sensitive
|
||||||
type: object
|
type: object
|
||||||
|
reply:
|
||||||
|
properties:
|
||||||
|
exclude_reply_user_ids:
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
in_reply_to_tweet_id:
|
||||||
|
default: '1111111111111111111'
|
||||||
|
example: '1111111111111111111'
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- in_reply_to_tweet_id
|
||||||
|
- exclude_reply_user_ids
|
||||||
|
type: object
|
||||||
semantic_annotation_ids:
|
semantic_annotation_ids:
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
|
|
|
||||||
15
dist/docs/openapi-3.0.yaml
vendored
15
dist/docs/openapi-3.0.yaml
vendored
|
|
@ -1270,6 +1270,7 @@ components:
|
||||||
enum:
|
enum:
|
||||||
- Vertical
|
- Vertical
|
||||||
- VerticalConversation
|
- VerticalConversation
|
||||||
|
- Carousel
|
||||||
type: string
|
type: string
|
||||||
entryType:
|
entryType:
|
||||||
$ref: '#/components/schemas/ContentEntryType'
|
$ref: '#/components/schemas/ContentEntryType'
|
||||||
|
|
@ -3330,6 +3331,20 @@ paths:
|
||||||
- media_entities
|
- media_entities
|
||||||
- possibly_sensitive
|
- possibly_sensitive
|
||||||
type: object
|
type: object
|
||||||
|
reply:
|
||||||
|
properties:
|
||||||
|
exclude_reply_user_ids:
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
in_reply_to_tweet_id:
|
||||||
|
default: '1111111111111111111'
|
||||||
|
example: '1111111111111111111'
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- in_reply_to_tweet_id
|
||||||
|
- exclude_reply_user_ids
|
||||||
|
type: object
|
||||||
semantic_annotation_ids:
|
semantic_annotation_ids:
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
|
|
|
||||||
|
|
@ -625,6 +625,10 @@
|
||||||
"possibly_sensitive": false
|
"possibly_sensitive": false
|
||||||
},
|
},
|
||||||
"semantic_annotation_ids": [],
|
"semantic_annotation_ids": [],
|
||||||
|
"reply?": {
|
||||||
|
"in_reply_to_tweet_id": "1111111111111111111",
|
||||||
|
"exclude_reply_user_ids": []
|
||||||
|
},
|
||||||
"dark_request": false
|
"dark_request": false
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ components:
|
||||||
$ref: "#/components/schemas/ContentEntryType" # TimelineTimelineCursor
|
$ref: "#/components/schemas/ContentEntryType" # TimelineTimelineCursor
|
||||||
displayType:
|
displayType:
|
||||||
type: string
|
type: string
|
||||||
enum: [Vertical, VerticalConversation]
|
enum: [Vertical, VerticalConversation, Carousel]
|
||||||
items:
|
items:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
|
|
|
||||||
|
|
@ -256,7 +256,11 @@ if __name__ == "__main__":
|
||||||
error_dump(e)
|
error_dump(e)
|
||||||
error_count += 1
|
error_count += 1
|
||||||
|
|
||||||
ids = ["1720975693524377759", "1720818185186791678", "1721006592303251551"]
|
ids = [
|
||||||
|
"1720975693524377759",
|
||||||
|
"1721006592303251551",
|
||||||
|
"1606661809075019776",
|
||||||
|
]
|
||||||
for id in ids:
|
for id in ids:
|
||||||
try:
|
try:
|
||||||
logger.info(f"Try: Self TweetDetail {id} Test")
|
logger.info(f"Try: Self TweetDetail {id} Test")
|
||||||
|
|
|
||||||
|
|
@ -10,19 +10,25 @@ class HookBase:
|
||||||
self.PLACEHOLDER = json.load(f)
|
self.PLACEHOLDER = json.load(f)
|
||||||
|
|
||||||
def placeholder_to_yaml(self, obj, default=False, example=False) -> dict:
|
def placeholder_to_yaml(self, obj, default=False, example=False) -> dict:
|
||||||
fn = lambda x: self.placeholder_to_yaml(x, default=default, example=example)
|
def mine(x):
|
||||||
if type(obj) is dict:
|
return self.placeholder_to_yaml(x, default=default, example=example)
|
||||||
properties = {i: fn(obj[i]) for i in obj}
|
|
||||||
|
def fn(x: str):
|
||||||
|
return x[:-1] if x.endswith("?") else x
|
||||||
|
|
||||||
|
if isinstance(obj, dict):
|
||||||
|
req = {k: v for k, v in obj.items() if not k.endswith("?")}
|
||||||
|
properties = {fn(k): mine(v) for k, v in obj.items()}
|
||||||
value = {
|
value = {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": properties,
|
"properties": properties,
|
||||||
}
|
}
|
||||||
value.update({"required": [i for i in obj]} if len(obj) > 0 else {})
|
value.update({"required": [i for i in req]} if len(req) > 0 else {})
|
||||||
value.update({"default": properties} if default else {})
|
value.update({"default": properties} if default else {})
|
||||||
value.update({"example": properties} if example else {})
|
value.update({"example": properties} if example else {})
|
||||||
return value
|
return value
|
||||||
elif type(obj) is list and len(obj) > 0:
|
elif isinstance(obj, list) and len(obj) > 0:
|
||||||
properties = fn(obj[0])
|
properties = mine(obj[0])
|
||||||
value = {
|
value = {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": properties,
|
"items": properties,
|
||||||
|
|
@ -30,7 +36,7 @@ class HookBase:
|
||||||
value.update({"default": [properties]} if default else {})
|
value.update({"default": [properties]} if default else {})
|
||||||
value.update({"example": [properties]} if example else {})
|
value.update({"example": [properties]} if example else {})
|
||||||
return value
|
return value
|
||||||
elif type(obj) is list and len(obj) == 0:
|
elif isinstance(obj, list) and len(obj) == 0:
|
||||||
value = {
|
value = {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {"type": "object"},
|
"items": {"type": "object"},
|
||||||
|
|
@ -38,11 +44,11 @@ class HookBase:
|
||||||
value.update({"default": []} if default else {})
|
value.update({"default": []} if default else {})
|
||||||
value.update({"example": []} if example else {})
|
value.update({"example": []} if example else {})
|
||||||
return value
|
return value
|
||||||
elif type(obj) is str:
|
elif isinstance(obj, str):
|
||||||
return {"type": "string", "example": obj, "default": obj}
|
return {"type": "string", "example": obj, "default": obj}
|
||||||
elif type(obj) is bool:
|
elif isinstance(obj, bool):
|
||||||
return {"type": "boolean", "example": obj, "default": obj}
|
return {"type": "boolean", "example": obj, "default": obj}
|
||||||
elif type(obj) is int:
|
elif isinstance(obj, int):
|
||||||
return {"type": "integer", "example": obj, "default": obj}
|
return {"type": "integer", "example": obj, "default": obj}
|
||||||
|
|
||||||
def load_component(self, name: str) -> dict:
|
def load_component(self, name: str) -> dict:
|
||||||
|
|
@ -112,7 +118,7 @@ class RemoveDiscriminator(SchemasHookBase):
|
||||||
class SchemasCheck(SchemasHookBase):
|
class SchemasCheck(SchemasHookBase):
|
||||||
def hook(self, value: dict):
|
def hook(self, value: dict):
|
||||||
if value.get("allOf") is not None:
|
if value.get("allOf") is not None:
|
||||||
print(f"allOf is used")
|
print("allOf is used")
|
||||||
if value.get("type") is None:
|
if value.get("type") is None:
|
||||||
print("Type is None")
|
print("Type is None")
|
||||||
return value
|
return value
|
||||||
|
|
@ -211,14 +217,18 @@ class AddParametersOnParameters(RequestHookBase):
|
||||||
|
|
||||||
for key in data.keys():
|
for key in data.keys():
|
||||||
if self.schemaType == "string":
|
if self.schemaType == "string":
|
||||||
example = data[key] if type(data[key]) is str else json.dumps(data[key])
|
example = (
|
||||||
|
data[key] if isinstance(data[key], 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 = data[key] if type(data[key]) is str else json.dumps(data[key])
|
example = (
|
||||||
|
data[key] if isinstance(data[key], str) else json.dumps(data[key])
|
||||||
|
)
|
||||||
schema = {
|
schema = {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"default": example,
|
"default": example,
|
||||||
|
|
@ -259,18 +269,18 @@ class AddParametersOnBody(RequestHookBase):
|
||||||
|
|
||||||
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: dict[str, dict] = self.PLACEHOLDER[self.path_name]
|
||||||
data = {key: data[key] for key in data.keys() if key not in self.ignoreKeys}
|
data = {k: v for k, v in data.items() if k not in self.ignoreKeys}
|
||||||
|
|
||||||
if self.schemaType == "string":
|
if self.schemaType == "string":
|
||||||
example = data if type(data) is str else json.dumps(data)
|
example = data if isinstance(data, 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 = data if type(data) is str else json.dumps(data)
|
example = data if isinstance(data, str) else json.dumps(data)
|
||||||
schema = {
|
schema = {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"default": example,
|
"default": example,
|
||||||
|
|
@ -278,10 +288,8 @@ class AddParametersOnBody(RequestHookBase):
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
schema = {
|
schema = {
|
||||||
"properties": {
|
"properties": {k: self.placeholder_to_yaml(v) for k, v in data.items()},
|
||||||
i: self.placeholder_to_yaml(data[i]) for i in data.keys()
|
"required": [k for k in data.keys()],
|
||||||
},
|
|
||||||
"required": [i for i in data.keys()],
|
|
||||||
}
|
}
|
||||||
value["requestBody"] = {
|
value["requestBody"] = {
|
||||||
"description": "body",
|
"description": "body",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue