# from waitress import serve # from flask import Flask, request, jsonify import uvicorn from fastapi import FastAPI, Request, HTTPException, status from dotenv import load_dotenv import logging import os app = FastAPI() # @app.middleware('http') # async def check_media_type(request: Request, call_next): # """ # Ensure only requests with content-type of application/json are handled. # """ # content_type = request.headers.get('content-type', default=None) # if content_type is None or not content_type.lower().startswith('application/json'): # raise HTTPException( # status_code=status.HTTP_415_UNSUPPORTED_MEDIA_TYPE, # detail=f'Unsupported media type {content_type}' # ) # response = await call_next(request) # return response @app.get('/') async def root(): return {'message': 'hello world'} @app.post('/test') async def test(request: Request): """ Test connection to server """ logging.debug('Content-Type: ', request.headers.get('content-type')) return {'status': 'success'} # @app.post('/execute') # # @app.before_request # def check_media_type(): # """ # Ignore requests that do not have Content-Type = application/json in header. # """ # content_type = request.headers.get('Content-Type') # if content_type is None or not content_type.lower().startswith('application/json'): # logging.error( # f"request with wrong content type made by {request.remote_addr}" # ) # return jsonify(status='unsupported media type'), 415 # @app.route('/test', methods=['POST']) # def test(): # logging.debug('Content-Type: ' + request.headers.get('Content-Type')) # logging.debug(request.get_json(force=True)) # return jsonify(status='success', sender=request.remote_addr), 200 if __name__ == '__main__': load_dotenv() # prepare variables # serve( # app=app, # host=listen_ip, # port=listen_port # ) uvicorn.run( app=app )