sharedkernel 2.2.6__tar.gz → 2.2.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/PKG-INFO +3 -1
  2. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/README.md +2 -0
  3. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/setup.py +1 -1
  4. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/s3_uploader.py +30 -26
  5. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel.egg-info/PKG-INFO +3 -1
  6. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/setup.cfg +0 -0
  7. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/common.py +0 -0
  8. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/data_format_converter.py +0 -0
  9. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/database/__init__.py +0 -0
  10. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/database/audit_model.py +0 -0
  11. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/database/mongo_generic_audit_repository.py +0 -0
  12. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/database/mongo_generic_repository.py +0 -0
  13. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/database/pagination_response_dto.py +0 -0
  14. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/date_converter.py +0 -0
  15. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/diff_utils.py +0 -0
  16. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/enum/__init__.py +0 -0
  17. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/enum/error_code.py +0 -0
  18. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/enum/sort_order.py +0 -0
  19. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/exception/__init__.py +0 -0
  20. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/exception/exception.py +0 -0
  21. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/exception/exception_handlers.py +0 -0
  22. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/jwt_service.py +0 -0
  23. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/normalizer/__init__.py +0 -0
  24. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/normalizer/number_normalizer.py +0 -0
  25. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/normalizer/phone_number_normalizer.py +0 -0
  26. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/normalizer/string_normalizer.py +0 -0
  27. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/objects/__init__.py +0 -0
  28. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/objects/base_document.py +0 -0
  29. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/objects/json_string_model.py +0 -0
  30. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/objects/jwt_model.py +0 -0
  31. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/objects/result.py +0 -0
  32. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/objects/user_info.py +0 -0
  33. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/regex_masking.py +0 -0
  34. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel/string_extentions.py +0 -0
  35. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel.egg-info/SOURCES.txt +0 -0
  36. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel.egg-info/dependency_links.txt +0 -0
  37. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel.egg-info/requires.txt +0 -0
  38. {sharedkernel-2.2.6 → sharedkernel-2.2.7}/sharedkernel.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sharedkernel
3
- Version: 2.2.6
3
+ Version: 2.2.7
4
4
  Summary: sharekernel is a shared package between all python projects
5
5
  Author: Smilinno
6
6
  Description-Content-Type: text/markdown
@@ -29,6 +29,8 @@ Dynamic: summary
29
29
  this is a shared kernel package
30
30
 
31
31
  # Change Log
32
+ ### Version 2.2.7
33
+ - add presigned url in s3 uploader
32
34
  ### Version 2.2.6
33
35
  - implement api key
34
36
  ### Version 2.2.5
@@ -2,6 +2,8 @@
2
2
  this is a shared kernel package
3
3
 
4
4
  # Change Log
5
+ ### Version 2.2.7
6
+ - add presigned url in s3 uploader
5
7
  ### Version 2.2.6
6
8
  - implement api key
7
9
  ### Version 2.2.5
@@ -37,7 +37,7 @@ setup(
37
37
  "deepdiff",
38
38
  ],
39
39
  # *strongly* suggested for sharing
40
- version="2.2.6",
40
+ version="2.2.7",
41
41
  description="sharekernel is a shared package between all python projects",
42
42
  long_description=long_description,
43
43
  long_description_content_type="text/markdown",
@@ -1,3 +1,4 @@
1
+
1
2
  import requests
2
3
  import boto3
3
4
  from io import BytesIO
@@ -6,57 +7,57 @@ import os
6
7
 
7
8
  class S3Uploader:
8
9
  def __init__(self, endpoint_url, bucket, access_key, secret_key):
9
- """
10
- Initializes the S3Uploader with credentials and optional endpoint/region.
11
-
12
- :param endpoint_url: Custom endpoint URL (for S3-compatible services like MinIO)
13
- :param bucket: Name of S3 bucket
14
- :param access_key: Access key
15
- :param secret_key: Secret key
16
- """
17
10
  self.endpoint_url = endpoint_url
18
11
  self.bucket = bucket
19
12
  self.access_key = access_key
20
13
  self.secret_key = secret_key
21
14
 
22
- # Initialize the S3 client
23
15
  self.s3 = boto3.client(
24
16
  's3',
25
17
  endpoint_url=self.endpoint_url,
26
18
  aws_access_key_id=self.access_key,
27
19
  aws_secret_access_key=self.secret_key,
28
20
  )
29
-
30
- def upload_file_object(self, file_obj, object_name=None, file_extension=None, folder_name=None):
31
- """
32
- Uploads a file object to an S3 bucket and returns its URL.
33
-
34
- :param file_obj: File object to upload
35
- :param object_name: S3 file name to save as (optional)
36
- :param file_extension: File extension to append to object name (optional)
37
- :param folder_name: Optional folder name to save the file in
38
- :return: URL of the uploaded file if successful, else False
39
- """
40
- # Use uuid4 to generate a unique object_name if not provided
21
+
22
+ @staticmethod
23
+ def __generate_object_name(object_name=None, file_extension=None, folder_name=None):
41
24
  if object_name is None:
42
25
  object_name = str(uuid.uuid4())
43
26
 
44
- # Append the file extension to the object_name
45
27
  if file_extension:
46
28
  object_name += file_extension
47
29
 
48
- # Prefix the object name with the folder if provided
49
30
  if folder_name:
50
31
  object_name = f"{folder_name}/{object_name}"
32
+
33
+ return object_name
34
+
35
+
36
+ def upload_file_object(self, file_obj, object_name=None, file_extension=None, folder_name=None, public_read=True):
37
+ object_name = self.__generate_object_name(object_name, file_extension, folder_name)
51
38
 
52
- # Upload the file object
53
- self.s3.upload_fileobj(file_obj, self.bucket, object_name, ExtraArgs={'ACL':'public-read'})
39
+ acl = "public-read" if public_read else "private"
40
+
41
+ self.s3.upload_fileobj(file_obj, self.bucket, object_name, ExtraArgs={'ACL': acl})
54
42
 
55
- # Construct the URL of the uploaded file
56
43
  file_url = f"{self.endpoint_url}/{self.bucket}/{object_name}"
57
44
 
58
45
  return file_url
59
46
 
47
+ def generate_presigned_url(self, object_name=None, file_extension=None, folder_name=None, expire_time: int = 3600):
48
+ object_name = self.__generate_object_name(object_name, file_extension, folder_name)
49
+
50
+ temp_url = self.s3.generate_presigned_url(
51
+ 'get_object',
52
+ Params={
53
+ 'Bucket': self.bucket,
54
+ 'Key': object_name
55
+ },
56
+ ExpiresIn=expire_time
57
+ )
58
+
59
+ return temp_url
60
+
60
61
  def upload_file_from_url(self, file_url, object_name=None, folder_name=None):
61
62
  """
62
63
  Downloads a file from a URL and uploads it to an S3 bucket, returning its URL.
@@ -80,3 +81,6 @@ class S3Uploader:
80
81
  # Step 2: Upload the file to S3
81
82
  file_obj = BytesIO(response.content)
82
83
  return self.upload_file_object(file_obj=file_obj, object_name=object_name, file_extension=file_extension, folder_name=folder_name)
84
+
85
+
86
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sharedkernel
3
- Version: 2.2.6
3
+ Version: 2.2.7
4
4
  Summary: sharekernel is a shared package between all python projects
5
5
  Author: Smilinno
6
6
  Description-Content-Type: text/markdown
@@ -29,6 +29,8 @@ Dynamic: summary
29
29
  this is a shared kernel package
30
30
 
31
31
  # Change Log
32
+ ### Version 2.2.7
33
+ - add presigned url in s3 uploader
32
34
  ### Version 2.2.6
33
35
  - implement api key
34
36
  ### Version 2.2.5
File without changes