1+ import re
12from user_scanner .core .orchestrator import generic_validate
23from user_scanner .core .result import Result
34from user_scanner .core .helpers import get_random_user_agent
45
56
6- def validate_chess_com (user ):
7+ def validate_chess_com (user : str ) -> Result :
8+ # Length must be between 3 and 25 characters
9+ if not (3 <= len (user ) <= 25 ):
10+ return Result .error ("Length must be 3-25 characters" )
11+
12+ # Only letters, numbers, underscores, and dashes allowed
13+ if not re .match (r'^[a-zA-Z0-9_-]+$' , user ):
14+ return Result .error ("Usernames can only contain letters, numbers, underscores, and hyphens" )
15+
16+ # Must start and end with an alphanumeric character
17+ if not (user [0 ].isalnum () and user [- 1 ].isalnum ()):
18+ return Result .error ("Username must start and end with a letter or number" )
19+
720 url = f"https://www.chess.com/callback/user/valid?username={ user } "
821 show_url = "https://chess.com"
922
1023 headers = {
11- 'User-Agent' :get_random_user_agent (),
24+ 'User-Agent' : get_random_user_agent (),
1225 'Accept' : "application/json, text/plain, */*" ,
1326 'Accept-Encoding' : "identity" ,
1427 'Accept-Language' : "en-US,en;q=0.9" ,
@@ -37,4 +50,4 @@ def process(response):
3750 elif result == 0 :
3851 print ("Unavailable!" )
3952 else :
40- print ("Error occurred!" )
53+ print (f "Error occurred! Reason: { result . get_reason () } " )
0 commit comments