csc-cia-stne 0.1.24__py3-none-any.whl → 0.1.25__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.
@@ -1,14 +1,9 @@
1
+ import re
1
2
  import requests
2
3
  import jwt
3
4
  from datetime import datetime, timedelta
4
5
  import time
5
- #import subprocess
6
6
  import json
7
- #from modules.pdf import gerar_pdf_extrato
8
- #import csv
9
- #import io
10
- #import sys
11
- #import logging
12
7
  from pydantic import BaseModel, StrictStr, StrictInt, ValidationError, field_validator, FieldValidationInfo
13
8
  from typing import Literal
14
9
 
@@ -217,7 +212,6 @@ class StoneAdmin:
217
212
 
218
213
  raise Exception(f"Falha ao logar no Stone Admin:\n{response.json()}")
219
214
 
220
-
221
215
  def renew_authorization(self):
222
216
  """
223
217
  Renova a autorização do usuário.
@@ -419,7 +413,7 @@ class StoneAdmin:
419
413
  response = requests.get(f"{self.base_url}/accounts/{account_id}", headers=self.authenticated_header)
420
414
  return response
421
415
 
422
- def detalhar_titular_cpf(self,documento:str):
416
+ def __detalhar_titular_cpf(self,documento:str):
423
417
  """
424
418
  Detalha o titular do CPF fornecido.
425
419
  Args:
@@ -438,20 +432,24 @@ class StoneAdmin:
438
432
  DocumentoValidator(documento=documento)
439
433
 
440
434
  except ValidationError as e:
441
-
442
- raise ValueError("Erro na validação dos dados de input do método:", e.errors())
435
+
436
+ return {"success": False, "status_code": 400, "error": f"Erro na validação dos dados de input do método: {e.errors()}"}
443
437
 
444
438
  # Detalha o titular
445
439
 
446
440
  # Verificar na rota /users (CPF)
441
+ documento = re.sub(r"\D", "", documento)
447
442
  filtro = {'document': documento}
448
443
  param = {
449
444
  'filter': json.dumps(filtro) # Transforma o dicionário em uma string JSON
450
445
  }
451
- response = requests.get(f"{self.base_url}/users", params=param, headers=self.authenticated_header)
452
- return response
446
+ try:
447
+ response = requests.get(f"{self.base_url}/users", params=param, headers=self.authenticated_header)
448
+ return {"success": True, "status_code": response.status_code, "data": response.json()}
449
+ except Exception as e:
450
+ return {"success": False, "status_code": 500, "error": str(e)}
453
451
 
454
- def detalhar_titular_cnpj(self,documento:str):
452
+ def __detalhar_titular_cnpj(self,documento:str):
455
453
  """
456
454
  Detalha o titular de um CNPJ.
457
455
  Args:
@@ -470,16 +468,29 @@ class StoneAdmin:
470
468
  DocumentoValidator(documento=documento)
471
469
 
472
470
  except ValidationError as e:
473
-
474
- raise ValueError("Erro na validação dos dados de input do método:", e.errors())
471
+ return {"success": False, "status_code": 400, "error": f"Erro na validação dos dados de input do método: {e.errors()}"}
475
472
 
476
473
  # Verificar na rota /organizations (CNPJ)
474
+ documento = re.sub(r"\D", "", documento)
477
475
  filtro = {'document': documento}
476
+
478
477
  param = {
479
478
  'filter': json.dumps(filtro) # Transforma o dicionário em uma string JSON
480
479
  }
481
- response = requests.get(f"{self.base_url}/organizations", params=param, headers=self.authenticated_header)
482
- return response
480
+ try:
481
+ response = requests.get(f"{self.base_url}/organizations", params=param, headers=self.authenticated_header)
482
+ return {"success": True, "status_code": response.status_code, "data": response.json()}
483
+ except Exception as e:
484
+ return {"success": False, "status_code": 500, "error": str(e)}
485
+
486
+ def detalhar_titular(self,tipo_documento:str,documento:str):
487
+ documento = re.sub(r"\D", "", documento)
488
+ if str(tipo_documento).strip().upper() == 'F':
489
+ return self.__detalhar_titular_cpf(documento=documento)
490
+ elif str(tipo_documento).strip().upper() == 'J':
491
+ return self.__detalhar_titular_cnpj(documento=documento)
492
+ else:
493
+ return {"success": False, "error": "Tipo de documento inválido. Use 'F' para CPF ou 'J' para CNPJ."}
483
494
 
484
495
  def extrair_extrato(self,account_id:str,data_inicio:datetime,data_fim:datetime,async_mode:bool=False):
485
496
  """
@@ -527,12 +538,12 @@ class StoneAdmin:
527
538
 
528
539
  except ValidationError as e:
529
540
 
530
- raise ValueError("Erro na validação dos dados de input do método:", e.errors())
541
+ return {"success": False, "status_code": 400, "error": f"Erro na validação dos dados de input do método: {e.errors()}"}
531
542
 
532
543
  # Validação do async_mode
533
544
  if not isinstance(async_mode, bool):
534
-
535
- raise ValueError("async_mode deve ser um valor booleano.")
545
+
546
+ return {"success": False, "status_code": 400, "error": "async_mode deve ser um valor booleano."}
536
547
 
537
548
 
538
549
  data_inicio = data_inicio.strftime('%Y-%m-%d')
@@ -612,4 +623,68 @@ class StoneAdmin:
612
623
 
613
624
  except Exception as e:
614
625
 
615
- return {'result': False, 'status_code': None, 'error': e, 'pdf_content': None}
626
+ return {'result': False, 'status_code': None, 'error': e, 'pdf_content': None}
627
+
628
+ def legal_entities(self, documento: str) -> dict:
629
+ """
630
+ Consulta informações de entidades legais por documento.
631
+
632
+ Args:
633
+ documento (str): Número do documento (CPF ou CNPJ) para consulta.
634
+ Aceita documento com ou sem formatação.
635
+
636
+ Returns:
637
+ dict: Dicionário contendo o resultado da consulta:
638
+ - success (bool): Indica se a operação foi bem-sucedida.
639
+ - data (list): Lista de entidades encontradas (se success=True).
640
+ - error (str): Mensagem de erro (se success=False).
641
+
642
+ Raises:
643
+ ValueError: Se ocorrer erro na validação dos dados de entrada.
644
+
645
+ Example:
646
+ >>> admin = StoneAdmin(client_id, user_agent, private_key, ambiente)
647
+ >>> resultado = admin.legal_entities("12345678901234")
648
+ >>> if resultado["success"]:
649
+ ... print(f"Encontradas {len(resultado['data'])} entidades")
650
+ ... for entidade in resultado["data"]:
651
+ ... print(entidade)
652
+ ... else:
653
+ ... print(f"Erro: {resultado['error']}")
654
+ """
655
+
656
+ try:
657
+ # Validação usando a classe existente
658
+ DocumentoValidator(documento=documento)
659
+
660
+ except ValidationError as e:
661
+ return {"success": False, "status_code": 400, "error": f"Erro na validação dos dados de input do método: {e.errors()}"}
662
+
663
+ # Remove formatação do documento
664
+ documento_limpo = re.sub(r"\D", "", documento)
665
+
666
+ filtro = {'main_document_value': documento_limpo}
667
+ param = {
668
+ 'filter': json.dumps(filtro)
669
+ }
670
+
671
+ try:
672
+ response = requests.get(
673
+ f"{self.base_url}/legal-entities",
674
+ params=param,
675
+ headers=self.authenticated_header,
676
+ timeout=120
677
+ )
678
+
679
+ # Verifica se houve erro de autenticação
680
+ if response.status_code == 401 and 'unauthenticated' in str(response.json()):
681
+ self.renew_authorization()
682
+ return self.legal_entities(documento=documento)
683
+
684
+ if response.status_code == 200:
685
+ return {"success": True, "status_code": 200, "data": response.json()}
686
+ else:
687
+ return {"success": False, "status_code": response.status_code, "error": f"Status {response.status_code}: {response.text}"}
688
+
689
+ except Exception as e:
690
+ return {"success": False, "error": str(e)}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: csc_cia_stne
3
- Version: 0.1.24
3
+ Version: 0.1.25
4
4
  Summary: Biblioteca do time CSC-CIA utilizada no desenvolvimento de RPAs
5
5
  License: MIT
6
6
  Keywords: karavela,csc,cia,stone,rpa,botcity,stne
@@ -12,7 +12,7 @@ csc_cia_stne/logger_rich.py,sha256=fklgkBb4rblKQd7YZ3q-eWfhGg9eflO2k2-z4pGh_yo,5
12
12
  csc_cia_stne/provio.py,sha256=G-pDnHYLSp97joc7S7dvwjNvl3omnTmvdi3rOPQf5GA,3987
13
13
  csc_cia_stne/servicenow.py,sha256=PUGN6bjcQ25hf-bwVuuKsnRKdqYTaYZ1Uh7QHn9OM24,35350
14
14
  csc_cia_stne/slack.py,sha256=sPLeaQh_JewLcrBDjjwUgbjtC7d1Np03OTy06JimMV4,8117
15
- csc_cia_stne/stne_admin.py,sha256=4v_BVQAwZeWmxvjDOkwFAl9yIxJ3r54BY7pRgAgSXEM,24220
15
+ csc_cia_stne/stne_admin.py,sha256=Xjp8IJ3QmK5ABxYcsrt4XTEPUXP3U1Kti9ruReQWPf8,27880
16
16
  csc_cia_stne/wacess.py,sha256=g-bWZNpm_tU7UsW1G_rqh_2fW2KShvxZHGOerX8DuQw,26768
17
17
  csc_cia_stne/web.py,sha256=TBXUJ5eS36fytU3oFDuJsogi0sgw_qKgK-uphx4Nvxo,2506
18
18
  csc_cia_stne/utilitarios/__init__.py,sha256=ul7p-4XduFOQW2ldKSIbTQb3eq7h5O1l8IwSP7b5KgY,410
@@ -38,8 +38,8 @@ csc_cia_stne/utilitarios/web_screen/__init__.py,sha256=5QcOPXKd95SvP2DoZiHS0gaU6
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.24.dist-info/licenses/LICENCE,sha256=LPGMtgKki2C3KEZP7hDhA1HBrlq5JCHkIeStUCLEMx4,1073
42
- csc_cia_stne-0.1.24.dist-info/METADATA,sha256=G3ov32MRsGKvbDTClrgP3IVdxOF70L5rGpZ--MEVANA,1464
43
- csc_cia_stne-0.1.24.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
44
- csc_cia_stne-0.1.24.dist-info/top_level.txt,sha256=ldo7GVv3tQx5KJvwBzdZzzQmjPys2NDVVn1rv0BOF2Q,13
45
- csc_cia_stne-0.1.24.dist-info/RECORD,,
41
+ csc_cia_stne-0.1.25.dist-info/licenses/LICENCE,sha256=LPGMtgKki2C3KEZP7hDhA1HBrlq5JCHkIeStUCLEMx4,1073
42
+ csc_cia_stne-0.1.25.dist-info/METADATA,sha256=klgYUqOj8pEqVBRW7WrSVHSMo85Y1jGWX8ta4D_NPeY,1464
43
+ csc_cia_stne-0.1.25.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
44
+ csc_cia_stne-0.1.25.dist-info/top_level.txt,sha256=ldo7GVv3tQx5KJvwBzdZzzQmjPys2NDVVn1rv0BOF2Q,13
45
+ csc_cia_stne-0.1.25.dist-info/RECORD,,