| 
									
										
										
										
											2023-11-19 13:41:43 +08:00
										 |  |  | import hashlib | 
					
						
							| 
									
										
										
										
											2024-01-03 08:22:48 +08:00
										 |  |  | import re | 
					
						
							| 
									
										
										
										
											2023-11-19 13:41:43 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def get_gravatar_url(email): | 
					
						
							|  |  |  |     # Trim leading and trailing whitespace from | 
					
						
							|  |  |  |     # an email address and force all characters | 
					
						
							|  |  |  |     # to lower case | 
					
						
							|  |  |  |     address = str(email).strip().lower() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Create a SHA256 hash of the final string | 
					
						
							|  |  |  |     hash_object = hashlib.sha256(address.encode()) | 
					
						
							|  |  |  |     hash_hex = hash_object.hexdigest() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Grab the actual image URL | 
					
						
							| 
									
										
										
										
											2023-11-19 16:46:27 +08:00
										 |  |  |     return f"https://www.gravatar.com/avatar/{hash_hex}?d=mp" | 
					
						
							| 
									
										
										
										
											2023-12-24 07:38:52 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def calculate_sha256(file): | 
					
						
							|  |  |  |     sha256 = hashlib.sha256() | 
					
						
							|  |  |  |     # Read the file in chunks to efficiently handle large files | 
					
						
							|  |  |  |     for chunk in iter(lambda: file.read(8192), b""): | 
					
						
							|  |  |  |         sha256.update(chunk) | 
					
						
							|  |  |  |     return sha256.hexdigest() | 
					
						
							| 
									
										
										
										
											2024-01-03 08:22:48 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def validate_email_format(email: str) -> bool: | 
					
						
							|  |  |  |     if not re.match(r"[^@]+@[^@]+\.[^@]+", email): | 
					
						
							|  |  |  |         return False | 
					
						
							|  |  |  |     return True |