"""MySQL Client for ows-product-digital-marketing testing..""" from typing import Any import boto3 class S3Client: """S3 Client for ows-video testing.""" @staticmethod def upload_test_video(response: dict[str, Any], video_data: dict[str, Any]) -> None: """Upload test video to S3.""" bucket_name = "qa-cucumbers" object_key = video_data["video_key"] s3 = boto3.client("s3") # Assigns binary data from test asset to object_data object_data = s3.get_object(Bucket=bucket_name, Key=object_key)["Body"].read() # Create new boto3 session from credentials from post workflow endpoint session = boto3.Session( aws_access_key_id=response["aws_access_key_id"], aws_secret_access_key=response["aws_secret_access_key"], aws_session_token=response["token"], ) input_video_s3_bucket = response["input_video_s3_bucket"] input_video_s3_key = response["input_video_s3_key"] # Upload object to bucket/key path from post workflow endpoint session.client("s3").put_object( Body=object_data, Bucket=input_video_s3_bucket, Key=input_video_s3_key ) new_object_data = s3.get_object( Bucket=input_video_s3_bucket, Key=input_video_s3_key )["Body"].read() assert object_data == new_object_data return @staticmethod def uploaded_video_size(response: dict[str, Any]) -> int: """Retrieve uploaded video size.""" bucket_name = response["input_video_s3_bucket"] object_key = response["input_video_s3_key"] s3 = boto3.client("s3") return s3.get_object(Bucket=bucket_name, Key=object_key)["ContentLength"]