mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
commit
d50935ae73
8 changed files with 51 additions and 25 deletions
|
|
@ -1,18 +1,15 @@
|
|||
from fastapi import Depends, HTTPException, status, Request
|
||||
from fastapi.security import APIKeyHeader, OAuth2PasswordBearer
|
||||
from jose import JWTError, jwe, jwt
|
||||
from Crypto.Protocol.KDF import HKDF
|
||||
from Crypto.Hash import SHA256
|
||||
from cryptography.hazmat.primitives.kdf.hkdf import HKDF
|
||||
from cryptography.hazmat.primitives import hashes
|
||||
from cryptography.hazmat.backends import default_backend
|
||||
from typing import Any
|
||||
import json
|
||||
# import logging
|
||||
from app.config import get_settings
|
||||
from app.utils import logger
|
||||
|
||||
|
||||
# logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
api_key_header = APIKeyHeader(name=get_settings().API_KEY_NAME, auto_error=False)
|
||||
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
|
||||
|
||||
|
|
@ -43,14 +40,14 @@ def get_user(user_id: str):
|
|||
|
||||
def get_derived_encryption_key(secret: str) -> Any:
|
||||
context = str.encode("NextAuth.js Generated Encryption Key")
|
||||
return HKDF(
|
||||
master=secret.encode(),
|
||||
key_len=32,
|
||||
salt="".encode(),
|
||||
hashmod=SHA256,
|
||||
num_keys=1,
|
||||
context=context,
|
||||
hkdf = HKDF(
|
||||
algorithm=hashes.SHA256(),
|
||||
length=32,
|
||||
salt=b"",
|
||||
info=context,
|
||||
backend=default_backend()
|
||||
)
|
||||
return hkdf.derive(secret.encode())
|
||||
|
||||
|
||||
def get_token_payload(token: str, secret: str) -> dict[str, Any]:
|
||||
|
|
@ -97,6 +94,7 @@ def validate_jwt_token(token: str = Depends(oauth2_scheme)):
|
|||
|
||||
|
||||
async def validate_token(token: str = Depends(oauth2_scheme), request: Request = None):
|
||||
print("VALIDATING - PRINT")
|
||||
logger.info("Validating token")
|
||||
logger.info(token)
|
||||
logger.info("Secret")
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
from fastapi import APIRouter, Depends
|
||||
from app.dependencies import validate_token
|
||||
from app.plan.schemas import PlanTriggerRequest
|
||||
from app.utils import read_csv_from_s3
|
||||
from app.utils import read_csv_from_s3, logger
|
||||
from app.config import get_settings
|
||||
from app.utils import logger
|
||||
|
||||
|
||||
router = APIRouter(
|
||||
prefix="/plan",
|
||||
|
|
|
|||
|
|
@ -3,13 +3,11 @@ import csv
|
|||
from io import StringIO
|
||||
import string
|
||||
import secrets
|
||||
from aws_lambda_powertools import Logger, Metrics, Tracer
|
||||
from aws_lambda_powertools.metrics import MetricUnit # noqa: F401
|
||||
import logging
|
||||
|
||||
|
||||
logger: Logger = Logger()
|
||||
metrics: Metrics = Metrics()
|
||||
tracer: Tracer = Tracer()
|
||||
logger = logging.getLogger(__name__)
|
||||
logger.setLevel(logging.INFO)
|
||||
|
||||
|
||||
def read_csv_from_s3(bucket_name, filepath):
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
# Pull base image
|
||||
FROM python:3.10.12-slim-buster
|
||||
FROM lambci/lambda:build-python3.10
|
||||
|
||||
# Set environment variables
|
||||
ENV PYTHONDONTWRITEBYTECODE 1
|
||||
|
|
|
|||
22
backend/docker/lambda.Dockerfile
Normal file
22
backend/docker/lambda.Dockerfile
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
FROM public.ecr.aws/lambda/python:3.10
|
||||
|
||||
# Set environment variables
|
||||
ENV PYTHONDONTWRITEBYTECODE 1
|
||||
ENV PYTHONUNBUFFERED 1
|
||||
|
||||
# Set work directory
|
||||
WORKDIR /app
|
||||
|
||||
# Install system dependencies
|
||||
#RUN apt-get update && apt-get install -y netcat-openbsd
|
||||
|
||||
# Install python dependencies
|
||||
COPY ./requirements/base.txt ./requirements/base.txt
|
||||
RUN pip install --upgrade pip
|
||||
RUN pip install -r requirements/base.txt
|
||||
|
||||
# Copy project
|
||||
COPY . .
|
||||
|
||||
# command to run on container start
|
||||
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
anyio==3.7.1
|
||||
cffi==1.15.1
|
||||
click==8.1.3
|
||||
cryptography==41.0.1
|
||||
cryptography==37.0.4
|
||||
ecdsa==0.18.0
|
||||
exceptiongroup==1.1.2
|
||||
fastapi==0.99.1
|
||||
|
|
@ -25,6 +25,4 @@ uvicorn==0.22.0
|
|||
uvloop==0.17.0
|
||||
watchfiles==0.19.0
|
||||
websockets==11.0.3
|
||||
boto3
|
||||
pycryptodome
|
||||
aws-lambda-powertools
|
||||
boto3
|
||||
|
|
@ -28,6 +28,7 @@ custom:
|
|||
useDocker: true
|
||||
dockerSsh: true
|
||||
fileName: requirements/base.txt
|
||||
dockerRunCmdExtraArgs: ['--platform', 'linux/amd64']
|
||||
customDomain:
|
||||
domainName: api.${self:provider.environment.DOMAIN_NAME}
|
||||
createRoute53Record: true
|
||||
|
|
|
|||
9
backend/test_event.json
Normal file
9
backend/test_event.json
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"httpMethod": "POST",
|
||||
"path": "/v1/plan/trigger",
|
||||
"headers": {
|
||||
"x-api-key": "4QPwbB6hEdUloDVtbBJCUTfGBdBgWwpeavWQ7t5Z",
|
||||
"Authorization": "Bearer 4QPwbB6hEdUloDVtbBJCUTfGBdBgWwpeavWQ7t5Z"
|
||||
},
|
||||
"body": "{\"goal\": \"epc\", \"goal_value\": \"c\", \"portfolio_id\": 1, \"trigger_file_path\": \"test\", \"housing_type\": \"social\"}"
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue