Skip to content
Merged
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
2 changes: 2 additions & 0 deletions src/eligibility_signposting_api/audit/audit_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import logging
from typing import Annotated

from aws_xray_sdk.core import xray_recorder
from botocore.client import BaseClient
from wireup import Inject, service

Expand All @@ -21,6 +22,7 @@ def __init__(
self.firehose = firehose
self.audit_delivery_stream = audit_delivery_stream

@xray_recorder.capture("AuditService.audit") # pyright: ignore[reportCallIssue]
def audit(self, audit_record: dict) -> None:
"""
Sends an audit record to the configured Firehose delivery stream.
Expand Down
14 changes: 9 additions & 5 deletions src/eligibility_signposting_api/repos/campaign_repo.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from collections.abc import Generator
from typing import Annotated, NewType

from aws_xray_sdk.core import xray_recorder
from botocore.client import BaseClient
from wireup import Inject, service

Expand All @@ -25,9 +26,12 @@ def __init__(
self.s3_client = s3_client
self.bucket_name = bucket_name

@xray_recorder.capture("CampaignRepo.get_campaign_configs") # pyright: ignore[reportCallIssue]
def get_campaign_configs(self) -> Generator[CampaignConfig]:
Comment thread
Karthikeyannhs marked this conversation as resolved.
campaign_objects = self.s3_client.list_objects(Bucket=self.bucket_name)
for campaign_object in campaign_objects["Contents"]:
response = self.s3_client.get_object(Bucket=self.bucket_name, Key=f"{campaign_object['Key']}")
body = response["Body"].read()
yield Rules.model_validate(json.loads(body)).campaign_config
with xray_recorder.in_subsegment("CampaignRepo.get_campaign_configs:list_objects"):
campaign_objects = self.s3_client.list_objects(Bucket=self.bucket_name)
with xray_recorder.in_subsegment("CampaignRepo.get_campaign_configs:get_objects"):
for campaign_object in campaign_objects["Contents"]:
response = self.s3_client.get_object(Bucket=self.bucket_name, Key=f"{campaign_object['Key']}")
body = response["Body"].read()
yield Rules.model_validate(json.loads(body)).campaign_config
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import logging
from typing import Annotated, NewType

from aws_xray_sdk.core import xray_recorder
from botocore.client import BaseClient
from botocore.exceptions import ClientError
from wireup import Inject, service
Expand All @@ -28,6 +29,7 @@ def __init__(
self.s3_client = s3_client
self.bucket_name = bucket_name

@xray_recorder.capture("ConsumerMappingRepo.get_permitted_campaign_ids") # pyright: ignore[reportCallIssue]
def get_permitted_campaign_ids(self, consumer_id: ConsumerId) -> list[CampaignID] | None:
try:
response = self.s3_client.get_object(Bucket=self.bucket_name, Key=CONSUMER_MAPPING_FILE_NAME)
Expand Down
2 changes: 2 additions & 0 deletions src/eligibility_signposting_api/repos/person_repo.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import logging
from typing import Annotated, Any, NewType

from aws_xray_sdk.core import xray_recorder
from boto3.dynamodb.conditions import Key
from boto3.resources.base import ServiceResource
from wireup import Inject, service
Expand Down Expand Up @@ -54,6 +55,7 @@ def get_person_record(self, nhs_hash: str | None) -> Any:

return None

@xray_recorder.capture("PersonRepo.get_eligibility_data") # pyright: ignore[reportCallIssue]
def get_eligibility_data(self, nhs_number: NHSNumber) -> Person:
# Hash using AWSCURRENT secret and fetch items
items = None
Expand Down
2 changes: 2 additions & 0 deletions src/eligibility_signposting_api/repos/secret_repo.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import logging
from typing import Annotated, NewType

from aws_xray_sdk.core import xray_recorder
from botocore.client import BaseClient
from botocore.exceptions import ClientError
from wireup import Inject, service
Expand All @@ -16,6 +17,7 @@ def __init__(self, secret_manager: Annotated[BaseClient, Inject(qualifier="secre
super().__init__()
self.secret_manager = secret_manager

@xray_recorder.capture("SecretRepo._get_secret_by_stage") # pyright: ignore[reportCallIssue]
def _get_secret_by_stage(self, secret_name: str, stage: str) -> dict[str, str]:
"""Internal helper to fetch a secret by version stage."""
try:
Expand Down
Loading