def get_rule()

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()