Skip to content
Merged

Dev #16

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.13
6 changes: 4 additions & 2 deletions aws/boto_aws.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@
from enum import Enum
from config import config


class ServiceNameAWS(Enum):
S3 = 's3'
SQS = 'sqs'
S3 = "s3"
SQS = "sqs"


def get_instance_aws(service_name: ServiceNameAWS):
return client(
Expand Down
17 changes: 8 additions & 9 deletions aws/s3_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,20 @@

logger = logging.getLogger(__name__)


class S3Service:
def __init__(self):
self.aws = get_instance_aws(
ServiceNameAWS.S3
)
self.aws = get_instance_aws(ServiceNameAWS.S3)
self.bucket_name = config.BUCKET_NAME

def upload_file(self, file_path: str, key: str):
try:
response = self.aws.upload_file(
file_path,
self.bucket_name,
key
response = self.aws.upload_file(file_path, self.bucket_name, key)
logger.info(
f"Arquivo {file_path} enviado para o bucket {self.bucket_name} com sucesso"
)
logger.info(f"Arquivo {file_path} enviado para o bucket {self.bucket_name} com sucesso")
except Exception as e:
logger.error(f"Erro ao enviar o arquivo {file_path} para o bucket {self.bucket_name}: {e}")
logger.error(
f"Erro ao enviar o arquivo {file_path} para o bucket {self.bucket_name}: {e}"
)
raise e
11 changes: 8 additions & 3 deletions aws/sqs_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,27 @@

logger = logging.getLogger(__name__)


class SQSService:
def __init__(self):
self.aws = get_instance_aws(ServiceNameAWS.SQS)
self.queue_url = config.QUEUE_URL
self.queue_url = config.QUEUE_URL

def send_message(self, messagens: List[Dict]):
try:
# Add MessageGroupId for FIFO queue
# Using order_id as MessageGroupId to ensure messages for the same order are processed in order
logger.info(f"Enviando mensagem para a fila {self.queue_url} com {len(messagens)} mensagens")
logger.info(
f"Enviando mensagem para a fila {self.queue_url} com {len(messagens)} mensagens"
)
response = self.aws.send_message(
QueueUrl=self.queue_url,
MessageBody=json.dumps(messagens),
)
logger.info(f"Mensagem enviada com sucesso: {response['MessageId']}")
return response
except ClientError as e:
logger.error(f"Erro ao enviar mensagem para a fila {self.queue_url}: {str(e)}")
logger.error(
f"Erro ao enviar mensagem para a fila {self.queue_url}: {str(e)}"
)
raise
39 changes: 26 additions & 13 deletions certified_builder/certificates_on_solana.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,35 @@

class CertificatesOnSolanaException(Exception):
"""Custom exception for CertificatesOnSolana errors."""
def __init__(self, message: str = "Error registering certificate on Solana",
details: str = "",
cause: Exception = None):

def __init__(
self,
message: str = "Error registering certificate on Solana",
details: str = "",
cause: Exception = None,
):
super().__init__(message)
self.details = details
self.cause = cause

class CertificatesOnSolana:

"""
class CertificatesOnSolana:
"""
A class to manage certificates on the Solana blockchain Service."""

@staticmethod
@retry(tries=3, delay=3, backoff=2, exceptions=(httpx.RequestError,CertificatesOnSolanaException, Exception), logger=logger)
@retry(
tries=3,
delay=3,
backoff=2,
exceptions=(httpx.RequestError, CertificatesOnSolanaException, Exception),
logger=logger,
)
def register_certificate_on_solana(certificate_data: dict) -> dict:
logger.info("Registering certificate on Solana blockchain with data: %s", certificate_data)
logger.info(
"Registering certificate on Solana blockchain with data: %s",
certificate_data,
)
"""
Registers a certificate on the Solana blockchain.

Expand All @@ -37,17 +50,17 @@ def register_certificate_on_solana(certificate_data: dict) -> dict:
try:
with httpx.Client(timeout=60.0) as client:
response = client.post(
url= config.SERVICE_URL_REGISTRATION_API_SOLANA,
url=config.SERVICE_URL_REGISTRATION_API_SOLANA,
headers={
"x-api-key": config.SERVICE_API_KEY_REGISTRATION_API_SOLANA,
"Content-Type": "application/json"
"Content-Type": "application/json",
},
json=certificate_data
json=certificate_data,
)
logger.info(f"Solana response status code: {response.status_code}")
logger.info(f"Solana response status code: {response.status_code}")
response.raise_for_status()
solana_response = response.json()
return solana_response
return solana_response
except Exception as e:
logger.error(f"Error registering certificate on Solana: {str(e)}")
raise CertificatesOnSolanaException(details=str(e), cause=e)
raise CertificatesOnSolanaException(details=str(e), cause=e)
Loading