Skip to content

Commit 8ef05c4

Browse files
authored
Merge pull request #127 from anonymort/feat/lemmy-validator
feat: add Lemmy username validator
2 parents 955851a + 0fddfac commit 8ef05c4

File tree

1 file changed

+30
-0
lines changed
  • user_scanner/user_scan/community

1 file changed

+30
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import re
2+
from user_scanner.core.orchestrator import status_validate
3+
from user_scanner.core.result import Result
4+
5+
6+
def validate_lemmy(user: str) -> Result:
7+
"""Check username availability on Lemmy (lemmy.world instance)"""
8+
9+
# Lemmy username rules: 3-20 chars, alphanumeric and underscores only
10+
if not (3 <= len(user) <= 20):
11+
return Result.error("Length must be 3-20 characters")
12+
13+
if not re.match(r'^[a-zA-Z0-9_]+$', user):
14+
return Result.error("Only letters, numbers, and underscores allowed")
15+
16+
url = f"https://lemmy.world/api/v3/user?username={user}"
17+
18+
return status_validate(url, [400, 404], 200, timeout=5.0)
19+
20+
21+
if __name__ == "__main__":
22+
user = input("Username?: ").strip()
23+
result = validate_lemmy(user)
24+
25+
if result == 1:
26+
print("Available!")
27+
elif result == 0:
28+
print("Unavailable!")
29+
else:
30+
print(f"Error occurred! Reason: {result.get_reason()}")

0 commit comments

Comments
 (0)