diff --git a/enrollments-events/app/events/issue_cert.py b/enrollments-events/app/events/issue_cert.py index 0cf149a..5ed43ae 100644 --- a/enrollments-events/app/events/issue_cert.py +++ b/enrollments-events/app/events/issue_cert.py @@ -40,7 +40,7 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool: started_at: datetime = fromisoformat(new_image['started_at']) # type: ignore completed_at: datetime = fromisoformat(new_image['completed_at']) # type: ignore - # The certificate may not expire + # Certificate may have no expiration cert_expires_at = ( completed_at + timedelta(days=int(cert['exp_interval'])) if 'exp_interval' in cert diff --git a/enrollments-events/app/events/reenroll_if_failed.py b/enrollments-events/app/events/reenroll_if_failed.py index ff9293e..dd27fb6 100644 --- a/enrollments-events/app/events/reenroll_if_failed.py +++ b/enrollments-events/app/events/reenroll_if_failed.py @@ -14,14 +14,14 @@ from enrollment import LinkedEntity, enroll from schemas import Course, Enrollment, User logger = Logger(__name__) -enrollment_layer = DynamoDBPersistenceLayer(ENROLLMENT_TABLE, dynamodb_client) +dyn = DynamoDBPersistenceLayer(ENROLLMENT_TABLE, dynamodb_client) @event_source(data_class=EventBridgeEvent) @logger.inject_lambda_context def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool: new_image = event.detail['new_image'] - metadata = enrollment_layer.collection.get_items( + metadata = dyn.collection.get_items( TransactKey(new_image['id']) + SortKey('METADATA#SUBSCRIPTION_COVERED', rename_key='subscription') + SortKey('METADATA#COURSE', rename_key='course') @@ -52,5 +52,5 @@ def lambda_handler(event: EventBridgeEvent, context: LambdaContext) -> bool: subscription=subscription, deduplication_window={'offset_days': metadata['dedup_window_offset_days']}, linked_entities=frozenset({LinkedEntity(new_image['id'], 'ENROLLMENT')}), - persistence_layer=enrollment_layer, + persistence_layer=dyn, ) diff --git a/id.saladeaula.digital/client/app/routes/upstream.ts b/id.saladeaula.digital/client/app/routes/upstream.ts new file mode 100644 index 0000000..4aa1bd2 --- /dev/null +++ b/id.saladeaula.digital/client/app/routes/upstream.ts @@ -0,0 +1,30 @@ +import type { Route } from './+types' + +export async function action({ request, context }: Route.ActionArgs) { + const url = new URL(request.url) + const issuerUrl = new URL(url.pathname, context.cloudflare.env.ISSUER_URL) + const r = await fetch(issuerUrl.toString(), { + method: request.method, + headers: request.headers, + body: await request.text() + }) + + return new Response(await r.text(), { + status: r.status, + headers: r.headers + }) +} + +export async function loader({ request, context }: Route.ActionArgs) { + const url = new URL(request.url) + const issuerUrl = new URL(url.pathname, context.cloudflare.env.ISSUER_URL) + const r = await fetch(issuerUrl.toString(), { + method: request.method, + headers: request.headers + }) + + return new Response(await r.text(), { + status: r.status, + headers: r.headers + }) +}