Initial skeleton
commit
6fcee7e1cf
@ -0,0 +1,83 @@
|
|||||||
|
from marshmallow_dataclass import dataclass, class_schema
|
||||||
|
from flask import Flask
|
||||||
|
from flask_smorest import Api, Blueprint
|
||||||
|
## from authlib.integrations.flask_oauth2 import ResourceProtector, current_token
|
||||||
|
|
||||||
|
|
||||||
|
## # Define a protected resource with JWT validation
|
||||||
|
## resource_protector = ResourceProtector()
|
||||||
|
|
||||||
|
## def validate_token():
|
||||||
|
## token = current_token
|
||||||
|
## claims = jwt.decode(token['access_token'], verify=False)
|
||||||
|
## issuer = claims['iss']
|
||||||
|
## jwks_uri = issuer + '/.well-known/jwks.json'
|
||||||
|
## # perform JWK set discovery and verification
|
||||||
|
## # return True if the token is valid, False otherwise
|
||||||
|
## return True
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class FileTransfer:
|
||||||
|
s3: str
|
||||||
|
pesit: str
|
||||||
|
|
||||||
|
FileTransferSchema = class_schema(FileTransfer)()
|
||||||
|
|
||||||
|
transfer_blp = Blueprint('transfer', 'transfer')
|
||||||
|
|
||||||
|
|
||||||
|
@transfer_blp.route('/send', methods=['POST'])
|
||||||
|
@transfer_blp.arguments(FileTransferSchema, location='json')
|
||||||
|
@transfer_blp.response(200, description="Success")
|
||||||
|
@transfer_blp.response(400, description="Bad Request")
|
||||||
|
def send_file(transfer: FileTransfer):
|
||||||
|
"""Send a file from S3 to PeSIT.
|
||||||
|
|
||||||
|
:param transfer: A JSON object with "source" and "destination" fields.
|
||||||
|
:type transfer: FileTransfer
|
||||||
|
:return: A message indicating success or failure.
|
||||||
|
:rtype: str
|
||||||
|
"""
|
||||||
|
|
||||||
|
print("SEND")
|
||||||
|
|
||||||
|
@transfer_blp.route('/receive', methods=['POST'])
|
||||||
|
@transfer_blp.arguments(FileTransferSchema, location='json')
|
||||||
|
@transfer_blp.response(200, description="Success")
|
||||||
|
@transfer_blp.response(400, description="Bad Request")
|
||||||
|
def receive_file(transfer: FileTransfer):
|
||||||
|
"""Receive a file from PeSIT to S3"
|
||||||
|
|
||||||
|
:param transfer: A JSON object with "source" and "destination" fields.
|
||||||
|
:type transfer: FileTransfer
|
||||||
|
:return: A message indicating success or failure.
|
||||||
|
:rtype: str
|
||||||
|
"""
|
||||||
|
|
||||||
|
print("RECEIVE")
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
app.config["API_TITLE"] = "S3/PeSIT proxy"
|
||||||
|
app.config["API_VERSION"] = "v1"
|
||||||
|
app.config["OPENAPI_VERSION"] = "3.0.2"
|
||||||
|
app.config["OPENAPI_URL_PREFIX"] = "oapi"
|
||||||
|
app.config["OPENAPI_REDOC_PATH"] = "redoc"
|
||||||
|
app.config["OPENAPI_REDOC_URL"] = "https://rebilly.github.io/ReDoc/releases/latest/redoc.min.js"
|
||||||
|
app.config["OPENAPI_SWAGGER_UI_PATH"] = "swagger"
|
||||||
|
app.config["OPENAPI_SWAGGER_UI_URL"] = "https://cdn.jsdelivr.net/npm/swagger-ui-dist/"
|
||||||
|
|
||||||
|
# OpenAPI endpoints: /oapi/openapi.json
|
||||||
|
# /oapi/redoc
|
||||||
|
# /opai/swagger
|
||||||
|
|
||||||
|
api = Api(app)
|
||||||
|
|
||||||
|
# register the transfer blueprint
|
||||||
|
api.register_blueprint(transfer_blp)
|
||||||
|
|
||||||
|
def main(debug: bool = False):
|
||||||
|
app.run(debug=debug)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main(debug=True)
|
@ -0,0 +1,12 @@
|
|||||||
|
[project]
|
||||||
|
name = "pesit"
|
||||||
|
version = "0.0.1"
|
||||||
|
dependencies = [
|
||||||
|
"flask",
|
||||||
|
"flask_smorest",
|
||||||
|
"marshmallow-dataclass",
|
||||||
|
"authlib",
|
||||||
|
]
|
||||||
|
|
||||||
|
[project.scripts]
|
||||||
|
pesit_proxy = "pesit.proxy:main"
|
Loading…
Reference in New Issue