From 7b73fe3c9038f26f5a6cf0357219753287d1abe9 Mon Sep 17 00:00:00 2001 From: KonstantAnxiety Date: Thu, 19 Dec 2024 13:04:24 +0300 Subject: [PATCH] fix handler, fix mypy --- .../dl_file_uploader_api_lib/app.py | 1 + .../dl_file_uploader_api_lib/schemas/files.py | 10 +++++----- .../dl_file_uploader_api_lib/views/files.py | 6 ++---- .../dl_file_uploader_api_lib_tests/req_builder.py | 2 +- lib/dl_s3/dl_s3/s3_service.py | 2 +- 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/lib/dl_file_uploader_api_lib/dl_file_uploader_api_lib/app.py b/lib/dl_file_uploader_api_lib/dl_file_uploader_api_lib/app.py index fb39414c1..06fc4723e 100644 --- a/lib/dl_file_uploader_api_lib/dl_file_uploader_api_lib/app.py +++ b/lib/dl_file_uploader_api_lib/dl_file_uploader_api_lib/app.py @@ -136,6 +136,7 @@ def create_app(self, app_version: str) -> web.Application: app.router.add_route("get", "/api/v2/metrics", MetricsView) app.router.add_route("post", "/api/v2/files", files_views.FilesView) + app.router.add_route("post", "/api/v2/make_presigned_url", files_views.MakePresignedUrlView) app.router.add_route("post", "/api/v2/links", files_views.LinksView) app.router.add_route("post", "/api/v2/documents", files_views.DocumentsView) app.router.add_route("post", "/api/v2/update_connection_data", files_views.UpdateConnectionDataView) diff --git a/lib/dl_file_uploader_api_lib/dl_file_uploader_api_lib/schemas/files.py b/lib/dl_file_uploader_api_lib/dl_file_uploader_api_lib/schemas/files.py index ce4ffe5e7..a60f731f6 100644 --- a/lib/dl_file_uploader_api_lib/dl_file_uploader_api_lib/schemas/files.py +++ b/lib/dl_file_uploader_api_lib/dl_file_uploader_api_lib/schemas/files.py @@ -82,14 +82,14 @@ class Meta: unknown = ma.INCLUDE key = ma.fields.String() - x_amz_algorithm = ma.fields.String(data_key="x-amz-algorithm") - x_amz_credential = ma.fields.String(data_key="x-amz-credential") - x_amz_date = ma.fields.String(data_key="x-amz-date") + x_amz_algorithm = ma.fields.String(attribute="x-amz-algorithm", data_key="x-amz-algorithm") + x_amz_credential = ma.fields.String(attribute="x-amz-credential", data_key="x-amz-credential") + x_amz_date = ma.fields.String(attribute="x-amz-date", data_key="x-amz-date") policy = ma.fields.String() - x_amz_signature = ma.fields.String(data_key="x-amz-signature") + x_amz_signature = ma.fields.String(attribute="x-amz-signature", data_key="x-amz-signature") url = ma.fields.String(required=True) - fields = ma.fields.Nested(PresignedUrlFields) + _fields = ma.fields.Nested(PresignedUrlFields, required=True, attribute="fields", data_key="fields") class FileStatusRequestSchema(BaseRequestSchema): diff --git a/lib/dl_file_uploader_api_lib/dl_file_uploader_api_lib/views/files.py b/lib/dl_file_uploader_api_lib/dl_file_uploader_api_lib/views/files.py index 8192c00b5..7b057c700 100644 --- a/lib/dl_file_uploader_api_lib/dl_file_uploader_api_lib/views/files.py +++ b/lib/dl_file_uploader_api_lib/dl_file_uploader_api_lib/views/files.py @@ -131,8 +131,6 @@ async def _chunk_iter(chunk_size: int = 10 * 1024 * 1024) -> AsyncGenerator[byte class MakePresignedUrlView(FileUploaderBaseView): - REQUIRED_RESOURCES: ClassVar[frozenset[RequiredResource]] = frozenset() # Don't skip CSRF check - async def post(self) -> web.StreamResponse: req_data = await self._load_post_request_schema_data(files_schemas.MakePresignedUrlRequestSchema) content_md5: str = req_data["content_md5"] @@ -140,14 +138,14 @@ async def post(self) -> web.StreamResponse: s3 = self.dl_request.get_s3_service() s3_key = "{}_{}".format(self.dl_request.rci.user_id or "unknown", str(uuid.uuid4())) - url = s3.client.generate_presigned_post( + url = await s3.client.generate_presigned_post( Bucket=s3.tmp_bucket_name, Key=s3_key, ExpiresIn=60 * 60, # 1 hour # TODO config? Conditions=[ ["content-length-range", 1, 200 * 1024 * 1024], # 1B .. 200MB # TODO use constant {"Content-MD5": content_md5}, - ] + ], ) return web.json_response( diff --git a/lib/dl_file_uploader_api_lib/dl_file_uploader_api_lib_tests/req_builder.py b/lib/dl_file_uploader_api_lib/dl_file_uploader_api_lib_tests/req_builder.py index 7a946d574..6c24ee012 100644 --- a/lib/dl_file_uploader_api_lib/dl_file_uploader_api_lib_tests/req_builder.py +++ b/lib/dl_file_uploader_api_lib/dl_file_uploader_api_lib_tests/req_builder.py @@ -102,7 +102,7 @@ def upload_documents( def presigned_url(cls, content_md5: str, *, require_ok: bool = True) -> Req: return Req( method="post", - url=f"/api/v2/make_presigned_url", + url="/api/v2/make_presigned_url", data_json={ "content_md5": content_md5, }, diff --git a/lib/dl_s3/dl_s3/s3_service.py b/lib/dl_s3/dl_s3/s3_service.py index 0894680b9..eec46e4da 100644 --- a/lib/dl_s3/dl_s3/s3_service.py +++ b/lib/dl_s3/dl_s3/s3_service.py @@ -60,7 +60,7 @@ async def initialize(self) -> None: aws_access_key_id=self._access_key_id, aws_secret_access_key=self._secret_access_key, endpoint_url=self._endpoint_url, - config=AioConfig(signature_version="s3v4") + config=AioConfig(signature_version="s3v4"), ) session = get_session()