from fastapi import FastAPI from fastapi.staticfiles import StaticFiles from fastapi.templating import Jinja2Templates from fastapi import Request #from elasticsearch import Elasticsearch import sys import elastic_transport from searching import es_search, es_query import json import yaml app = FastAPI(debug=True) templates = Jinja2Templates(directory="./httpdemo") #app.mount("/", StaticFiles(directory="/")) @app.get("/") def serve_home(request: Request, q: str=""): try: resp = es_search(q) query=es_query(q) message = "found ...?" except (elastic_transport.ConnectionError, elastic_transport.ConnectionTimeout) as e: print(e,sys.stderr) results=[] resp={} query={} message = f"cannot reach the search server! : %s" % e else: results=resp["hits"]["hits"] templates.env.filters["json"]=lambda x: yaml.dump(dict(x)) return templates.TemplateResponse("index.html", context= { "request": resp,"results": results,"message": message, "query": query})