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

Merge pull request #49 from fa0311/dev

Dev
This commit is contained in:
ふぁ 2023-11-21 12:02:15 +09:00 committed by GitHub
commit b4389178cb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 69 additions and 23 deletions

View file

@ -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

View file

@ -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

View file

@ -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": {

View file

@ -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:

View file

@ -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")

View file

@ -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",