Refactor Instagram username resolution to improve logging functionality and enhance parameter typing
Browse files
app.py
CHANGED
@@ -26,11 +26,12 @@ async def index():
|
|
26 |
@app.route('/check/<platform>/<username>', methods=['GET'])
|
27 |
async def check_social_media_handle(platform: str, username: str):
|
28 |
logs = []
|
|
|
29 |
response = {}
|
30 |
match platform.lower():
|
31 |
case "instagram":
|
32 |
response = await async_availability_status(
|
33 |
-
resolve_instagram_username(username,
|
34 |
case "linkedin-user":
|
35 |
response = await async_availability_status(
|
36 |
resolve_linkedin_username(username, "in"))
|
@@ -43,7 +44,7 @@ async def check_social_media_handle(platform: str, username: str):
|
|
43 |
}
|
44 |
return {**response, "logs": logs}
|
45 |
|
46 |
-
def resolve_instagram_username(username: str, logger) -> tuple[str, bool, str] :
|
47 |
def get_json_value(page_source, key, value_pattern):
|
48 |
pattern = rf'[\'"]?{key}[\'"]?\s*:\s*[\'"]?({value_pattern})[\'"]?'
|
49 |
match = re.search(pattern, page_source, flags=re.IGNORECASE)
|
@@ -73,8 +74,8 @@ def resolve_instagram_username(username: str, logger) -> tuple[str, bool, str] :
|
|
73 |
headers={
|
74 |
"x-ig-app-id": x_ig_app_id,
|
75 |
})
|
76 |
-
logger(
|
77 |
-
logger(
|
78 |
status = (user_data_response.json() or {}).get('status')
|
79 |
return (
|
80 |
username,
|
|
|
26 |
@app.route('/check/<platform>/<username>', methods=['GET'])
|
27 |
async def check_social_media_handle(platform: str, username: str):
|
28 |
logs = []
|
29 |
+
logger = lambda key, value: logs.append({ "key": key, "value": value })
|
30 |
response = {}
|
31 |
match platform.lower():
|
32 |
case "instagram":
|
33 |
response = await async_availability_status(
|
34 |
+
resolve_instagram_username(username, logger))
|
35 |
case "linkedin-user":
|
36 |
response = await async_availability_status(
|
37 |
resolve_linkedin_username(username, "in"))
|
|
|
44 |
}
|
45 |
return {**response, "logs": logs}
|
46 |
|
47 |
+
def resolve_instagram_username(username: str, logger: Callable[[str, str], None]) -> tuple[str, bool, str] :
|
48 |
def get_json_value(page_source, key, value_pattern):
|
49 |
pattern = rf'[\'"]?{key}[\'"]?\s*:\s*[\'"]?({value_pattern})[\'"]?'
|
50 |
match = re.search(pattern, page_source, flags=re.IGNORECASE)
|
|
|
74 |
headers={
|
75 |
"x-ig-app-id": x_ig_app_id,
|
76 |
})
|
77 |
+
logger("user_data_response:status", user_data_response.status_code)
|
78 |
+
logger("user_data_response:text", user_data_response.text)
|
79 |
status = (user_data_response.json() or {}).get('status')
|
80 |
return (
|
81 |
username,
|