in src/handlers/rule_handler.py [0:0]
def get_rule(self, event: RuleGetModel):
_LOG.debug(f'Get rules action')
customer = event.customer or SYSTEM_CUSTOMER
lek = Lek.deserialize(event.next_token or None)
if event.rule:
# TODO split to get and list endpoints
_LOG.debug('Rule id was given. Trying to resolve one rule')
rule = self.rule_service.resolve_rule(
customer=customer,
name_prefix=event.rule,
cloud=event.cloud
)
if rule:
return build_response(
content=self.rule_service.dto(rule)
)
return build_response(content=[])
_LOG.debug('Going to list rules')
if event.rule_source_id:
rs = self.rule_source_service.get_nullable(event.rule_source_id)
if not rs or rs.customer != customer:
raise ResponseFactory(HTTPStatus.NOT_FOUND).message(
self.rule_source_service.not_found_message()
).exc()
cursor = self.rule_service.get_by_rule_source(
rule_source=rs,
cloud=event.cloud,
limit=event.limit,
last_evaluated_key=lek.value
)
elif event.git_project_id:
cursor = self.rule_service.get_by(
customer=customer,
project=event.git_project_id,
ref=event.git_ref,
cloud=event.cloud,
limit=event.limit,
last_evaluated_key=lek.value
)
else: # no rule_source_id, git_project_id, git_ref
cursor = self.rule_service.get_by_id_index(
customer=customer,
cloud=event.cloud,
limit=event.limit,
last_evaluated_key=lek.value
)
dto = list(self.rule_service.dto(rule) for rule in cursor)
lek.value = cursor.last_evaluated_key
return ResponseFactory().items(
dto, next_token=lek.serialize() if lek else None
).build()