google_cloud.py
1 2 # ============================================================================ 3 # GOOGLE CLOUD 4 # ============================================================================ 5 6 from google.cloud import storage 7 from io import BytesIO 8 from google.oauth2 import service_account 9 from src.config import Config 10 from datetime import timedelta 11 12 class GCSUploader: 13 def __init__(self, bucket_name: str): 14 creds = service_account.Credentials.from_service_account_file( 15 Config.GOOGLE_CREDENTIALS_PATH 16 ) 17 self.client = storage.Client(credentials=creds) 18 self.bucket = self.client.bucket(bucket_name) 19 20 21 def upload_pdf(self, pdf_bytes: BytesIO, filename: str) -> dict: 22 pdf_bytes.seek(0) 23 # filename = f"cvs/{candidate_name.replace(' ', '_')}_{uuid.uuid4().hex}.pdf" 24 blob = self.bucket.blob(filename) 25 blob.upload_from_file( 26 pdf_bytes, 27 content_type="application/pdf" 28 ) 29 30 # Generate signed URL 31 signed_url = blob.generate_signed_url( 32 version="v4", 33 expiration=timedelta(hours=24), 34 method="GET" 35 ) 36 37 return { 38 "signed_url": signed_url 39 }