Skip to content
This repository was archived by the owner on Jul 15, 2025. It is now read-only.
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: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# args for `flask run`
FLASK_APP=wsgi
FLASK_ENV=development
FLASK_DEBUG=true
FLASK_RUN_PORT=6502
FLASK_SKIP_DOTENV=true

Expand Down
10 changes: 4 additions & 6 deletions api_reflector/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,18 +81,16 @@ class Response(Model):
endpoint = relationship("Endpoint", back_populates="responses")
rules = relationship("Rule", back_populates="response")
actions = relationship("Action", back_populates="response")
tags = relationship("Tag", secondary=response_tag)
tags = relationship("Tag", secondary=response_tag, back_populates="responses")

def __str__(self) -> str:
max_body_length = 20
if len(self.content) > max_body_length:
body = self.content[:max_body_length] + "..."
body = f"{self.content[:max_body_length]}..."
else:
body = self.content

if body:
return f"{self.status_code} {body}"
return str(self.status_code)
return f"{self.status_code} {body}" if body else str(self.status_code)

def execute_actions(self, req_json: Mapping[str, Any], content: str):
"""
Expand Down Expand Up @@ -171,7 +169,7 @@ class Tag(Model):
id = Column(Integer, primary_key=True)
name = Column(String, unique=True, nullable=False, default="")

responses = relationship("Response", secondary=response_tag)
responses = relationship("Response", secondary=response_tag, back_populates="tags")

def __str__(self) -> str:
return f"{self.name}"
5 changes: 3 additions & 2 deletions api_reflector/rules_engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"""

import operator
import random
from enum import Enum
from typing import Any, Callable, Mapping, NamedTuple, TypeVar, Union

Expand Down Expand Up @@ -125,5 +126,5 @@ def find_best_response(
# sort by score
scores = sorted(scores, key=lambda score: score[0], reverse=True)

# return the best
return scores[0][1]
# pick a score from the best options
return random.choice([score[1] for score in scores if score[0] == scores[0][0]])