<reponame>nabe-chan/201007-001_TestLambda
from fastapi import FastAPI
from fastapi.responses import HTMLResponse
from fastapi.requests import Request
from fastapi.templating import Jinja2Templates
from mangum import Mangum
import uvicorn

import pathlib

#
# FastAPIフレームワークのインスタンス化
#
# app server (uvicorn) からコールされる関数
#
app = FastAPI()

#
# jinja2のテンプレートインスタンス生成
#
# 相対パスで指定
# Lambda = root is uploaded zip file name.
# local uvicorn = root is parent directory of main.py.
#
PATH_TEMPLATES = str(
    pathlib.Path(__file__).resolve().parent / "templates"
)
templates = Jinja2Templates(directory=PATH_TEMPLATES)

#
# Controller 定義
# /
#
@app.get("/", response_class=HTMLResponse)
def index(request:Request):
    msg = "This is variable message."
    context = {
        "request":request,
        "message":msg
    }
    return templates.TemplateResponse(
        "index.html",
        context
    )

#
# Controller 定義
# /{item_name}
#
@app.get("/{item_name}", response_class=HTMLResponse)
def index(request:Request, item_name:str, query_string:str):
    context = {
        "request":request,
        "item_name":item_name,
        "query_string":query_string
    }
    return templates.TemplateResponse(
        "item.html",
        context
    )

#
# Mangumフレームワークのインスタンス化
#
# lambdaのhandlerに指定する関数
#
handler = Mangum(app)

# 
# Run FastAPI/Mangum Code using uvicorn
#
# ローカルテスト用 (lambda実行時はcallされない)
# コンソールで [$ uvicorn main:app --reload]でも可
# 
if __name__ == '__main__':
    uvicorn.run(app=app)

from fastapi import FastAPI
from fastapi.responses import HTMLResponse
from fastapi.requests import Request
from fastapi.templating import Jinja2Templates
from mangum import Mangum
import uvicorn

import pathlib

#
# FastAPIフレームワークのインスタンス化
#
# app server (uvicorn) からコールされる関数
#
app = FastAPI()

#
# jinja2のテンプレートインスタンス生成
#
# 相対パスで指定
# Lambda = root is uploaded zip file name.
# local uvicorn = root is parent directory of main.py.
#
PATH_TEMPLATES = str(
    pathlib.Path(__file__).resolve().parent / "templates"
)
templates = Jinja2Templates(directory=PATH_TEMPLATES)

#
# Controller 定義
# /
#
@app.get("/", response_class=HTMLResponse)
def index(request:Request):
    msg = "This is variable message."
    context = {
        "request":request,
        "message":msg
    }
    return templates.TemplateResponse(
        "index.html",
        context
    )

#
# Controller 定義
# /{item_name}
#
@app.get("/{item_name}", response_class=HTMLResponse)
def index(request:Request, item_name:str, query_string:str):
    context = {
        "request":request,
        "item_name":item_name,
        "query_string":query_string
    }
    return templates.TemplateResponse(
        "item.html",
        context
    )

#
# Mangumフレームワークのインスタンス化
#
# lambdaのhandlerに指定する関数
#
handler = Mangum(app)

# 
# Run FastAPI/Mangum Code using uvicorn
#
# ローカルテスト用 (lambda実行時はcallされない)
# コンソールで [$ uvicorn main:app --reload]でも可
# 
if __name__ == '__main__':
    uvicorn.run(app=app)
# # FastAPIフレームワークのインスタンス化 # # app server (uvicorn) からコールされる関数 # # # jinja2のテンプレートインスタンス生成 # # 相対パスで指定 # Lambda = root is uploaded zip file name. # local uvicorn = root is parent directory of main.py. # # # Controller 定義 # / # # # Controller 定義 # /{item_name} # # # Mangumフレームワークのインスタンス化 # # lambdaのhandlerに指定する関数 # # # Run FastAPI/Mangum Code using uvicorn # # ローカルテスト用 (lambda実行時はcallされない) # コンソールで [$ uvicorn main:app --reload]でも可 #