/ src / google_cloud.py
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          }