add route to download html template

This commit is contained in:
2025-10-25 22:14:18 -03:00
parent 29ecb87e45
commit f284b64c60
6 changed files with 42 additions and 10 deletions

View File

@@ -3,9 +3,9 @@ from datetime import datetime
from http import HTTPStatus
from io import BytesIO
from typing import Annotated, Any
from urllib.parse import urlparse
import requests
from aws_lambda_powertools import Logger
from aws_lambda_powertools.event_handler.api_gateway import Response, Router
from aws_lambda_powertools.event_handler.exceptions import (
BadRequestError,
@@ -21,7 +21,6 @@ from boto3clients import dynamodb_client, s3_client
from config import BUCKET_NAME, COURSE_TABLE, PAPERFORGE_API
from form_data import parse
logger = Logger(__name__)
router = Router()
dyn = DynamoDBPersistenceLayer(COURSE_TABLE, dynamodb_client)
@@ -134,6 +133,25 @@ def sample(course_id: str, s3_uri: Annotated[str, Body(embed=True)]):
)
@router.post('/<course_id>/template')
def template(course_id: str, s3_uri: Annotated[str, Body(embed=True)]):
parsed = urlparse(s3_uri)
bucket = parsed.netloc
object_key = parsed.path.lstrip('/')
r = s3_client.get_object(Bucket=bucket, Key=object_key)
return Response(
body=r['Body'].read(),
content_type='text/html',
status_code=HTTPStatus.OK,
headers={
'Content-Disposition': f'attachment; filename="{course_id}.html"',
},
)
def _datefmt(dt: datetime) -> str:
months = [
'Janeiro',

View File

@@ -1,4 +1,3 @@
from aws_lambda_powertools import Logger
from aws_lambda_powertools.event_handler.api_gateway import Router
from aws_lambda_powertools.event_handler.exceptions import (
NotFoundError,
@@ -8,7 +7,6 @@ from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
from boto3clients import dynamodb_client
from config import ORDER_TABLE
logger = Logger(__name__)
router = Router()
dyn = DynamoDBPersistenceLayer(ORDER_TABLE, dynamodb_client)

View File

@@ -1,4 +1,3 @@
from aws_lambda_powertools import Logger
from aws_lambda_powertools.event_handler.api_gateway import Router
from aws_lambda_powertools.event_handler.exceptions import (
NotFoundError,
@@ -13,7 +12,6 @@ from .orgs import router as orgs
__all__ = ['emails', 'orgs']
logger = Logger(__name__)
router = Router()
dyn = DynamoDBPersistenceLayer(USER_TABLE, dynamodb_client)

View File

@@ -1,11 +1,9 @@
from aws_lambda_powertools import Logger
from aws_lambda_powertools.event_handler.api_gateway import Router
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
from boto3clients import dynamodb_client
from config import USER_TABLE
logger = Logger(__name__)
router = Router()
dyn = DynamoDBPersistenceLayer(USER_TABLE, dynamodb_client)

View File

@@ -1,11 +1,9 @@
from aws_lambda_powertools import Logger
from aws_lambda_powertools.event_handler.api_gateway import Router
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
from boto3clients import dynamodb_client
from config import USER_TABLE
logger = Logger(__name__)
router = Router()
dyn = DynamoDBPersistenceLayer(USER_TABLE, dynamodb_client)
@@ -13,9 +11,11 @@ dyn = DynamoDBPersistenceLayer(USER_TABLE, dynamodb_client)
@router.get('/<user_id>/orgs')
def get_orgs(user_id: str):
start_key = router.current_event.get_query_string_value('start_key', None)
limit = int(router.current_event.get_query_string_value('limit', '25'))
return dyn.collection.query(
# Post-migration (users): rename `orgs` to `ORG`
key=KeyPair(user_id, 'orgs#'),
start_key=start_key,
limit=limit,
)