Compare commits

...

3 commits

Author SHA1 Message Date
Game_Time 60a89146da
Update core.py 2023-08-13 14:16:23 +05:00
Game_Time bd4fc0ad86
code and comment cleanup 2023-08-13 14:12:08 +05:00
Game_Time e489ff0898
update comments 2023-08-13 14:07:52 +05:00
3 changed files with 37 additions and 26 deletions

View file

@ -12,7 +12,14 @@ from dotenv import load_dotenv
load_dotenv() load_dotenv()
router = fastapi.APIRouter(tags=['core']) router = fastapi.APIRouter(tags=['core'])
async def check_core_auth(request): async def check_core_auth(request):
"""
### Checks the request's auth
Auth is taken from environment variable `CORE_API_KEY`
"""
received_auth = request.headers.get('Authorization') received_auth = request.headers.get('Authorization')
if received_auth != os.getenv('CORE_API_KEY'): if received_auth != os.getenv('CORE_API_KEY'):
@ -20,14 +27,12 @@ async def check_core_auth(request):
@router.get('/users') @router.get('/users')
async def get_users(discord_id: int, incoming_request: fastapi.Request): async def get_users(discord_id: int, incoming_request: fastapi.Request):
auth_error = await check_core_auth(incoming_request) auth = await check_core_auth(incoming_request)
if auth:
if auth_error:
return auth_error return auth_error
user = await users.by_discord_id(discord_id) # Get user by discord ID
if not await users.by_discord_id(discord_id):
if not user:
return fastapi.Response(status_code=404, content='User not found.') return fastapi.Response(status_code=404, content='User not found.')
return user return user

View file

@ -10,12 +10,13 @@ import load_balancing
from typing import Union from typing import Union
async def is_policy_violated(inp: Union[str, list]) -> bool: async def is_policy_violated(inp: Union[str, list]) -> bool:
"""Check if a message violates the moderation policy. """
You can either pass a list of messages consisting of dicts with "role" and "content", as used in the API parameter, ### Check if a message violates the moderation policy.
or just a simple string. You can either pass a list of messages consisting of dicts with "role" and "content", as used in the API parameter,
or just a simple string.
Returns True if the message violates the policy, False otherwise. Returns True if the message violates the policy, False otherwise.
""" """
text = inp text = inp

View file

@ -15,11 +15,14 @@ load_dotenv()
USE_PROXY_LIST = os.getenv('USE_PROXY_LIST', 'False').lower() == 'true' USE_PROXY_LIST = os.getenv('USE_PROXY_LIST', 'False').lower() == 'true'
class Proxy: class Proxy:
"""Represents a proxy. The type can be either http, https, socks4 or socks5. """
You can also pass a url, which will be parsed into the other attributes. ### Represents a proxy.
URL format: The type can be either http, https, socks4 or socks5.
You can also pass a url, which will be parsed into the other attributes.
URL format:
[type]://[username:password@]host:port [type]://[username:password@]host:port
""" """
def __init__(self, def __init__(self,
url: str=None, url: str=None,
@ -73,28 +76,27 @@ URL format:
proxy_type=proxy_types[self.proxy_type], proxy_type=proxy_types[self.proxy_type],
host=self.ip_address, host=self.ip_address,
port=self.port, port=self.port,
rdns=False, # remote DNS rdns=False,
username=self.username, username=self.username,
password=self.password password=self.password
) )
# load proxies from files ## Load proxies from their files
proxies_in_files = [] proxies_in_files = []
try: try:
for proxy_type in ['http', 'socks4', 'socks5']: for proxy_type in ['http', 'socks4', 'socks5']:
with open(f'secret/proxies/{proxy_type}.txt') as f: with open(f'secret/proxies/{proxy_type}.txt') as f:
for line in f.readlines(): for line in f:
if line.strip() and not line.strip().startswith('#'): clean_line = line.split('#', 1)[0].strip()
if '#' in line: if clean_line:
line = line.split('#')[0] proxies_in_files.append(f'{proxy_type}://{clean_line}')
proxies_in_files.append(f'{proxy_type}://{line.strip()}')
except FileNotFoundError: except FileNotFoundError:
pass pass
# Proxy lists support ## Manages the proxy list
class ProxyLists: class ProxyLists:
def __init__(self): def __init__(self):
@ -104,8 +106,11 @@ class ProxyLists:
self.connector = aiohttp_socks.ChainProxyConnector.from_urls(proxies_in_files) self.connector = aiohttp_socks.ChainProxyConnector.from_urls(proxies_in_files)
def get_proxy() -> Proxy: def get_proxy() -> Proxy:
"""Returns a Proxy object. The proxy is either from the proxy list or from the environment variables. """
""" ### Returns a Proxy object
The proxy is either from the proxy list or from the environment variables.
"""
if USE_PROXY_LIST: if USE_PROXY_LIST:
return ProxyLists().get_random return ProxyLists().get_random