48 lines
1.2 KiB
Python
48 lines
1.2 KiB
Python
import random
|
|
import string
|
|
from dataclasses import dataclass
|
|
from datetime import datetime
|
|
from pathlib import Path
|
|
from urllib.parse import urlunparse
|
|
|
|
|
|
@dataclass
|
|
class BaseUrl:
|
|
"""utility class to create a url string with urllib"""
|
|
|
|
netloc: str
|
|
scheme: str = "https"
|
|
path: str = ""
|
|
params: str = ""
|
|
query: str = ""
|
|
fragment: str = ""
|
|
|
|
def get(self, path: str = ""):
|
|
return urlunparse((self.scheme, self.netloc, path, self.params, self.query, self.fragment))
|
|
|
|
|
|
def get_datetime_string() -> str:
|
|
current_datetime = datetime.now()
|
|
return current_datetime.strftime("%Y-%m-%d-%H-%M-%S")
|
|
|
|
|
|
def rmtree(root_dir: Path):
|
|
"""removes a folder with content recursively"""
|
|
if not root_dir.is_dir():
|
|
return
|
|
for child in root_dir.iterdir():
|
|
if child.is_dir():
|
|
rmtree(child)
|
|
else:
|
|
child.unlink()
|
|
|
|
root_dir.rmdir()
|
|
|
|
|
|
def generate_random_string(length: int, punctuation=False) -> str:
|
|
"""returns a random string of the given length"""
|
|
characters = string.ascii_letters + string.digits
|
|
if punctuation:
|
|
characters += string.punctuation
|
|
random_string = "".join(random.choice(characters) for _ in range(length))
|
|
return random_string
|