diff --git a/src/abstract.py b/src/abstract.py index c9a3f56..ff056ae 100644 --- a/src/abstract.py +++ b/src/abstract.py @@ -60,7 +60,7 @@ def dict(self) -> Dict: return { "id": self.id, "content": self._base_64_content, - "isBase64Encoded": True, + "isBase64Encoded": False, "encoding": DEFAULT_ENCODING, "created_time_epoch": self._unix_timestamp, "metadata": self._metadata, diff --git a/src/api_handler.py b/src/api_handler.py index 234ff9c..c6234f1 100644 --- a/src/api_handler.py +++ b/src/api_handler.py @@ -1,4 +1,5 @@ from dynamodb import DB +from typing import List class ApiHandlerException(Exception): @@ -12,7 +13,7 @@ def __init__(self, db: DB, base_url: str) -> None: self._db = db self._base_url = base_url - def latest_pastes_urls(self, client_identifier: str = None): + def latest_pastes_urls(self, client_identifier: str = None) -> List[str]: try: pastes_id = self._db.paste_ids_by_client_identifier( client_identifier=client_identifier diff --git a/src/app.py b/src/app.py index 971d17b..aa5cc80 100644 --- a/src/app.py +++ b/src/app.py @@ -1,12 +1,13 @@ -import json - -import os +import json, os, hashlib +import logging from model import PasteDataAware from api_handler import ApiHandler from dynamodb import DB -import logging -import hashlib +from lambda_handlers import get_pastes_handler + +logger = logging.getLogger() +logger.setLevel("INFO") def hash_value(value: str, encoding: str = "utf-8") -> str: @@ -16,10 +17,6 @@ def hash_value(value: str, encoding: str = "utf-8") -> str: return hash_object.hexdigest() -logger = logging.getLogger() -logger.setLevel("INFO") - - def _dynamodb_endpoint_by_os(os: str): """ @@ -40,31 +37,6 @@ def _dynamodb_endpoint_by_os(os: str): return "http://host.docker.internal:8000" -def get_pastes_handler(event, context, db: DB): - query_params = event.get("queryStringParameters", {}) - - client_id = "" - try: - client_id = query_params.get("client_id") - except: - client_id = event["requestContext"]["identity"]["sourceIp"] - - api_handler = ApiHandler(db=db, base_url=os.environ.get("BASE_URL")) - paste_urls = api_handler.latest_pastes_urls(client_identifier=hash_value(client_id)) - - return { - "statusCode": 200, - "isBase64Encoded": False, - "headers": { - "content-type": "application/json", - "Access-Control-Allow-Origin": "*", - "Access-Control-Allow-Methods": "POST,GET,OPTIONS,DELETE", - "Access-Control-Allow-Headers": "Content-Type", - }, - "body": json.dumps(paste_urls), - } - - def get_handler(event, context, db: DB, is_web_browser: bool = False): try: id = event["queryStringParameters"]["id"] @@ -195,9 +167,21 @@ def lambda_handler(event, context): dynamodb_endpoint_url=_dynamodb_endpoint_by_os(os=os.environ["DEVENV"]), ) + api_handler = ApiHandler(db=db, base_url=os.environ.get("BASE_URL")) + if method == "GET": if "/api/pastes" in path: - return get_pastes_handler(context=context, event=event, db=db) + query_params = event.get("queryStringParameters", {}) + + try: + client_id = query_params.get("client_id") + except: + client_id = event["requestContext"]["identity"]["sourceIp"] + + return get_pastes_handler( + api_handler=api_handler, + client_id=hash_value(client_id), + ) if "/api" in path: return get_handler(context=context, event=event, db=db) diff --git a/src/lambda_handlers.py b/src/lambda_handlers.py new file mode 100644 index 0000000..848be51 --- /dev/null +++ b/src/lambda_handlers.py @@ -0,0 +1,18 @@ +import json +from api_handler import ApiHandler + + +def get_pastes_handler(api_handler: ApiHandler, client_id: str): + paste_urls = api_handler.latest_pastes_urls(client_identifier=client_id) + + return { + "statusCode": 200, + "isBase64Encoded": False, + "headers": { + "content-type": "application/json", + "Access-Control-Allow-Origin": "*", + "Access-Control-Allow-Methods": "POST,GET,OPTIONS,DELETE", + "Access-Control-Allow-Headers": "Content-Type", + }, + "body": json.dumps(paste_urls), + }