🍵 (class)
headers = {"User-Agent": "Mozilla/5.0"}
lols_gg = "https://lols.gg/en/name/checker"
lol_names = "https://lolnames.gg/en"
🍵 (instance)
nickname = self.valid_nickname(nickname)
region = region.upper()
✅ (start) -> dict: checker response
def start(self) -> dict:
return (
{
"statusCode": 200,
"nickname": self.nickname,
"region": self.region,
"lolsGG": self.check_nickname(self.lols_gg),
"lolNames": self.check_nickname(self.lol_names)
}
if self.is_request_valid()
else {
"statusCode": 400,
"nickname": self.nickname,
"region": self.region,
"lolsGG": None,
"lolNames": None
}
)
✅ (check_nickname) -> int: get_left_time(response.text)
def check_nickname(self, url: str) -> int:
url = f"{url}/{self.region}/{self.nickname}"
response = requests.get(url, headers=self.headers)
return self.get_left_time(response.text)
✅ (is_request_valid) -> bool: true if the nickname follows the riot rules and is a valid region
def is_request_valid(self) -> bool:
return (
2 < len(self.nickname) < 17
and "Riot" not in self.nickname
and self.region in self.get_valid_regions()
)
✅ (get_left_time) -> int: days left until the nick becomes available
def get_left_time(self, response_text: str) -> int:
response = re.search("available in ([^.]*) days.", response_text)
return int(response[1]) if response is not None else 0
🌱 (get_valid_regions) -> list: with all valid regions
def get_valid_regions() -> list:
return ["BR", "NA", "OCE", "LAS", "LAN", "EUNE", "EUW", "KR", "JP", "RU", "TR"]
🌱 (valid_nickname) -> str: containing only numbers, letters and space
def valid_nickname(nickname: str) -> str:
return re.sub("[^0-9a-zA-Zç ]", "", nickname)