csc-cia-stne 0.1.15__py3-none-any.whl → 0.1.16__py3-none-any.whl
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.
- csc_cia_stne/gcp_bucket.py +18 -9
- csc_cia_stne/utilitarios/validations/gcp_bucket.py +2 -1
- {csc_cia_stne-0.1.15.dist-info → csc_cia_stne-0.1.16.dist-info}/METADATA +1 -1
- {csc_cia_stne-0.1.15.dist-info → csc_cia_stne-0.1.16.dist-info}/RECORD +7 -7
- {csc_cia_stne-0.1.15.dist-info → csc_cia_stne-0.1.16.dist-info}/WHEEL +0 -0
- {csc_cia_stne-0.1.15.dist-info → csc_cia_stne-0.1.16.dist-info}/licenses/LICENCE +0 -0
- {csc_cia_stne-0.1.15.dist-info → csc_cia_stne-0.1.16.dist-info}/top_level.txt +0 -0
csc_cia_stne/gcp_bucket.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
+
import base64
|
1
2
|
from google.oauth2 import service_account
|
2
3
|
from google.cloud import storage
|
3
4
|
from pydantic import ValidationError
|
4
|
-
|
5
5
|
from .utilitarios.validations.gcp_bucket import InitParamsValidator,ListFilesValidator,GetFilesValidator,UploadFilesValidator,DeleteFilesValidator
|
6
6
|
|
7
7
|
|
@@ -112,7 +112,7 @@ class GCPBucket():
|
|
112
112
|
}
|
113
113
|
|
114
114
|
# Função para baixar os arquivos de um bucket
|
115
|
-
def get_file(self, bucket_name:str, filename:str, destination:str=None, chunksize:int=256) -> dict:
|
115
|
+
def get_file(self, bucket_name:str, filename:str, destination:str=None, chunksize:int=256, download_as:str='file') -> dict:
|
116
116
|
"""
|
117
117
|
Faz o download de um arquivo de um bucket do Google Cloud Storage para um destino local.
|
118
118
|
Args:
|
@@ -122,6 +122,7 @@ class GCPBucket():
|
|
122
122
|
Se não for especificado, o arquivo será salvo com o mesmo nome do arquivo no bucket.
|
123
123
|
chunksize (int, opcional): Tamanho do chunk em megabytes para o download do arquivo.
|
124
124
|
O padrão é 256 MB.
|
125
|
+
download_as (str, opcional): Define o formato do download.
|
125
126
|
Returns:
|
126
127
|
dict: Um dicionário contendo o status da operação.
|
127
128
|
- 'success' (bool): Indica se a operação foi bem-sucedida.
|
@@ -133,7 +134,7 @@ class GCPBucket():
|
|
133
134
|
|
134
135
|
try:
|
135
136
|
|
136
|
-
GetFilesValidator(bucket_name=bucket_name, filename=filename, destination=destination, chunksize=chunksize)
|
137
|
+
GetFilesValidator(bucket_name=bucket_name, filename=filename, destination=destination, chunksize=chunksize, download_as=download_as)
|
137
138
|
|
138
139
|
except ValidationError as e:
|
139
140
|
|
@@ -144,7 +145,7 @@ class GCPBucket():
|
|
144
145
|
destination = filename
|
145
146
|
|
146
147
|
try:
|
147
|
-
|
148
|
+
|
148
149
|
bucket = self.client.bucket(bucket_name)
|
149
150
|
|
150
151
|
except Exception as e:
|
@@ -161,12 +162,20 @@ class GCPBucket():
|
|
161
162
|
|
162
163
|
blob.chunk_size = chunksize * 1024 * 1024 # 256M
|
163
164
|
|
164
|
-
|
165
|
+
if download_as == 'file':
|
166
|
+
blob.download_to_filename(destination)
|
167
|
+
return {
|
168
|
+
'success':True,
|
169
|
+
'details':f'Arquivo baixado para o diretório: {str(destination)}'
|
170
|
+
}
|
165
171
|
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
172
|
+
elif download_as == 'bytes':
|
173
|
+
b64_str = base64.b64encode(blob.download_as_bytes()).decode()
|
174
|
+
return {
|
175
|
+
'success':True,
|
176
|
+
'details':f'Arquivo baixado como bytes em base64',
|
177
|
+
'data': b64_str
|
178
|
+
}
|
170
179
|
|
171
180
|
except Exception as e:
|
172
181
|
|
@@ -52,9 +52,10 @@ class GetFilesValidator(BaseModel):
|
|
52
52
|
filename: NonEmptyStr
|
53
53
|
destination: NonEmptyStr
|
54
54
|
chunksize: PositiveInt
|
55
|
+
download_as: NonEmptyStr = 'file' # 'file' ou 'bytes'
|
55
56
|
|
56
57
|
# Opcional: se você quiser mensagens personalizadas além das do Field
|
57
|
-
@field_validator("bucket_name", "filename", "destination")
|
58
|
+
@field_validator("bucket_name", "filename", "destination", "download_as")
|
58
59
|
def _not_blank(cls, v, info):
|
59
60
|
if not v.strip():
|
60
61
|
raise ValueError(f"O parametro '{info.field_name}' não pode ser vazio/whitespace.")
|
@@ -4,7 +4,7 @@ csc_cia_stne/bc_sta.py,sha256=sE-aU-ZVSAqryQrT1-nor9eAFM5npNAKF1QSm-ChhGU,28945
|
|
4
4
|
csc_cia_stne/email.py,sha256=y4xyPAe6_Mga5Wf6qAsDzYgn0f-zf2KshfItlWe58z8,8481
|
5
5
|
csc_cia_stne/ftp.py,sha256=M9WCaq2hm56jGyszNaPinliFaZS0BNrT7VrVPMjkMg4,10988
|
6
6
|
csc_cia_stne/gcp_bigquery.py,sha256=foq8azvvv_f7uikMDslX9RcUIrx7RAS-Sn0AGW0QFQc,7231
|
7
|
-
csc_cia_stne/gcp_bucket.py,sha256=
|
7
|
+
csc_cia_stne/gcp_bucket.py,sha256=vMALWiW7IoBCuJAR8bUCpOV6BuBzI9AhRRk3b72OdMk,11515
|
8
8
|
csc_cia_stne/google_drive.py,sha256=j1fvHpgU76_VqCtSEe05JXLOgNwNNfrP6GRKq6eU4b4,17074
|
9
9
|
csc_cia_stne/karavela.py,sha256=jJCYX43D49gGuzmwwK6bN9XVnv2dXdp9iHnnV5H1LMQ,4794
|
10
10
|
csc_cia_stne/logger_json.py,sha256=CXxSCOFGMymDi8XE9SKnPKjW4D0wJLqDLnxqePS26i8,3187
|
@@ -31,15 +31,15 @@ csc_cia_stne/utilitarios/validations/GoogleDriveValidator.py,sha256=Q1oZTae4hDJ2
|
|
31
31
|
csc_cia_stne/utilitarios/validations/ServiceNowValidator.py,sha256=yleKUIo1ZfyloP9fDPNjv3JJXdLcocT81WIgRSYmqEA,14423
|
32
32
|
csc_cia_stne/utilitarios/validations/__init__.py,sha256=O_qyEU2ji3u6LHUXZCXvUFsMpoMWL625qqHTXyXivTA,106
|
33
33
|
csc_cia_stne/utilitarios/validations/ftp.py,sha256=LNYyS2c8eou3ML23bBtn87xJFIKSrb8w-2acG0Zugog,4988
|
34
|
-
csc_cia_stne/utilitarios/validations/gcp_bucket.py,sha256=
|
34
|
+
csc_cia_stne/utilitarios/validations/gcp_bucket.py,sha256=aDwytjpur6vDKGDMzrqtzDi4bclQ-ahiXuURhmDYZpk,6979
|
35
35
|
csc_cia_stne/utilitarios/validations/waccess.py,sha256=8yfOrmIPUSLzbCt6P0F6vj3FkSgU_RgrJpJlRhlLyV0,7352
|
36
36
|
csc_cia_stne/utilitarios/validations/web_validator.py,sha256=HYKYSpDv1RvRjZIuwTPt-AbEz-9392MxM_O329iYuSA,5722
|
37
37
|
csc_cia_stne/utilitarios/web_screen/__init__.py,sha256=5QcOPXKd95SvP2DoZiHS0gaU68GlyFD9pQ9kae_9D1Q,100
|
38
38
|
csc_cia_stne/utilitarios/web_screen/web_screen_abstract.py,sha256=PjL8Vgfj_JdKidia7RFyCkro3avYLQu4RZRos41sh3w,3241
|
39
39
|
csc_cia_stne/utilitarios/web_screen/web_screen_botcity.py,sha256=Xi5YJjl2pcxlX3OimqcBWRNXZEpAE7asyUjDJ4Oho5U,12297
|
40
40
|
csc_cia_stne/utilitarios/web_screen/web_screen_selenium.py,sha256=JLIcPJE9ZX3Pd6zG6oTRMqqUAY063UzLY3ReRlxmiSM,15581
|
41
|
-
csc_cia_stne-0.1.
|
42
|
-
csc_cia_stne-0.1.
|
43
|
-
csc_cia_stne-0.1.
|
44
|
-
csc_cia_stne-0.1.
|
45
|
-
csc_cia_stne-0.1.
|
41
|
+
csc_cia_stne-0.1.16.dist-info/licenses/LICENCE,sha256=LPGMtgKki2C3KEZP7hDhA1HBrlq5JCHkIeStUCLEMx4,1073
|
42
|
+
csc_cia_stne-0.1.16.dist-info/METADATA,sha256=Namt43MLWsc_Ebf_VhYyrjRLBkUVc8XGDi7HsYzYfJ8,1464
|
43
|
+
csc_cia_stne-0.1.16.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
44
|
+
csc_cia_stne-0.1.16.dist-info/top_level.txt,sha256=ldo7GVv3tQx5KJvwBzdZzzQmjPys2NDVVn1rv0BOF2Q,13
|
45
|
+
csc_cia_stne-0.1.16.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|