diff --git a/Docs/.openapi-generator/FILES b/Docs/.openapi-generator/FILES index 2f49b87..8d27ff7 100755 --- a/Docs/.openapi-generator/FILES +++ b/Docs/.openapi-generator/FILES @@ -5,5 +5,6 @@ Models/MQGroupObject_criteria.md Models/MQProfileObject.md Models/__get_400_response.md Models/_mq_group_post_200_response.md +Models/_mq_group_post_202_response.md Models/_mq_group_post_400_response.md README.md diff --git a/Docs/Models/_mq_group_post_202_response.md b/Docs/Models/_mq_group_post_202_response.md new file mode 100755 index 0000000..8b63472 --- /dev/null +++ b/Docs/Models/_mq_group_post_202_response.md @@ -0,0 +1,9 @@ +# _mq_group_post_202_response +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +| **try\_again\_later** | [**oas_any_type_not_mapped**](.md) | | [default to null] | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/Docs/README.md b/Docs/README.md index fbf0249..82898b7 100755 --- a/Docs/README.md +++ b/Docs/README.md @@ -21,6 +21,7 @@ - [MQProfileObject](./Models/MQProfileObject.md) - [__get_400_response](./Models/__get_400_response.md) - [_mq_group_post_200_response](./Models/_mq_group_post_200_response.md) + - [_mq_group_post_202_response](./Models/_mq_group_post_202_response.md) - [_mq_group_post_400_response](./Models/_mq_group_post_400_response.md) diff --git a/dependencies-from-Dockerfile.log b/dependencies-from-Dockerfile.log index 859fea4..6ddf8fe 100644 --- a/dependencies-from-Dockerfile.log +++ b/dependencies-from-Dockerfile.log @@ -12,7 +12,7 @@ certifi==2024.2.2 cffi==1.16.0 charset-normalizer==3.3.2 coloredlogs==15.0.1 -cryptography==42.0.5 +cryptography==42.0.7 Deprecated==1.2.14 dnspython==2.6.1 googleapis-common-protos==1.59.1 @@ -55,22 +55,22 @@ referencing==0.31.1 requests==2.31.0 requests-futures==1.0.1 rfc3339-validator==0.1.4 -rpds-py==0.18.0 +rpds-py==0.18.1 six==1.16.0 thrift==0.20.0 tornado==6.4 typing_extensions==4.11.0 urllib3==2.2.1 -Werkzeug==3.0.2 +Werkzeug==3.0.3 wipac-dev-tools==1.9.1 -wipac-rest-tools==1.7.3 +wipac-rest-tools==1.7.4 wipac-telemetry==0.3.0 wrapt==1.16.0 zipp==3.18.1 ######################################################################## # pipdeptree ######################################################################## -cryptography==42.0.5 +cryptography==42.0.7 └── cffi [required: >=1.12, installed: 1.16.0] └── pycparser [required: Any, installed: 2.22] mqs @@ -79,11 +79,11 @@ mqs │ ├── jsonschema-specifications [required: >=2023.03.6, installed: 2023.12.1] │ │ └── referencing [required: >=0.31.0, installed: 0.31.1] │ │ ├── attrs [required: >=22.2.0, installed: 23.2.0] -│ │ └── rpds-py [required: >=0.7.0, installed: 0.18.0] +│ │ └── rpds-py [required: >=0.7.0, installed: 0.18.1] │ ├── referencing [required: >=0.28.4, installed: 0.31.1] │ │ ├── attrs [required: >=22.2.0, installed: 23.2.0] -│ │ └── rpds-py [required: >=0.7.0, installed: 0.18.0] -│ └── rpds-py [required: >=0.7.1, installed: 0.18.0] +│ │ └── rpds-py [required: >=0.7.0, installed: 0.18.1] +│ └── rpds-py [required: >=0.7.1, installed: 0.18.1] ├── motor [required: Any, installed: 3.4.0] │ └── pymongo [required: >=4.5,<5, installed: 4.7.1] │ └── dnspython [required: >=1.16.0,<3.0.0, installed: 2.6.1] @@ -103,17 +103,17 @@ mqs │ │ ├── jsonschema-specifications [required: >=2023.03.6, installed: 2023.12.1] │ │ │ └── referencing [required: >=0.31.0, installed: 0.31.1] │ │ │ ├── attrs [required: >=22.2.0, installed: 23.2.0] -│ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.0] +│ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.1] │ │ ├── referencing [required: >=0.28.4, installed: 0.31.1] │ │ │ ├── attrs [required: >=22.2.0, installed: 23.2.0] -│ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.0] -│ │ └── rpds-py [required: >=0.7.1, installed: 0.18.0] +│ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.1] +│ │ └── rpds-py [required: >=0.7.1, installed: 0.18.1] │ ├── jsonschema-path [required: >=0.3.1,<0.4.0, installed: 0.3.2] │ │ ├── pathable [required: >=0.4.1,<0.5.0, installed: 0.4.3] │ │ ├── PyYAML [required: >=5.1, installed: 6.0.1] │ │ ├── referencing [required: >=0.28.0,<0.32.0, installed: 0.31.1] │ │ │ ├── attrs [required: >=22.2.0, installed: 23.2.0] -│ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.0] +│ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.1] │ │ └── requests [required: >=2.31.0,<3.0.0, installed: 2.31.0] │ │ ├── certifi [required: >=2017.4.17, installed: 2024.2.2] │ │ ├── charset-normalizer [required: >=2,<4, installed: 3.3.2] @@ -126,15 +126,15 @@ mqs │ │ │ ├── jsonschema-specifications [required: >=2023.03.6, installed: 2023.12.1] │ │ │ │ └── referencing [required: >=0.31.0, installed: 0.31.1] │ │ │ │ ├── attrs [required: >=22.2.0, installed: 23.2.0] -│ │ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.0] +│ │ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.1] │ │ │ ├── referencing [required: >=0.28.4, installed: 0.31.1] │ │ │ │ ├── attrs [required: >=22.2.0, installed: 23.2.0] -│ │ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.0] -│ │ │ └── rpds-py [required: >=0.7.1, installed: 0.18.0] +│ │ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.1] +│ │ │ └── rpds-py [required: >=0.7.1, installed: 0.18.1] │ │ ├── jsonschema-specifications [required: >=2023.5.2,<2024.0.0, installed: 2023.12.1] │ │ │ └── referencing [required: >=0.31.0, installed: 0.31.1] │ │ │ ├── attrs [required: >=22.2.0, installed: 23.2.0] -│ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.0] +│ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.1] │ │ └── rfc3339-validator [required: Any, installed: 0.1.4] │ │ └── six [required: Any, installed: 1.16.0] │ ├── openapi-spec-validator [required: >=0.7.1,<0.8.0, installed: 0.7.1] @@ -143,17 +143,17 @@ mqs │ │ │ ├── jsonschema-specifications [required: >=2023.03.6, installed: 2023.12.1] │ │ │ │ └── referencing [required: >=0.31.0, installed: 0.31.1] │ │ │ │ ├── attrs [required: >=22.2.0, installed: 23.2.0] -│ │ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.0] +│ │ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.1] │ │ │ ├── referencing [required: >=0.28.4, installed: 0.31.1] │ │ │ │ ├── attrs [required: >=22.2.0, installed: 23.2.0] -│ │ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.0] -│ │ │ └── rpds-py [required: >=0.7.1, installed: 0.18.0] +│ │ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.1] +│ │ │ └── rpds-py [required: >=0.7.1, installed: 0.18.1] │ │ ├── jsonschema-path [required: >=0.3.1,<0.4.0, installed: 0.3.2] │ │ │ ├── pathable [required: >=0.4.1,<0.5.0, installed: 0.4.3] │ │ │ ├── PyYAML [required: >=5.1, installed: 6.0.1] │ │ │ ├── referencing [required: >=0.28.0,<0.32.0, installed: 0.31.1] │ │ │ │ ├── attrs [required: >=22.2.0, installed: 23.2.0] -│ │ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.0] +│ │ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.1] │ │ │ └── requests [required: >=2.31.0,<3.0.0, installed: 2.31.0] │ │ │ ├── certifi [required: >=2017.4.17, installed: 2024.2.2] │ │ │ ├── charset-normalizer [required: >=2,<4, installed: 3.3.2] @@ -166,19 +166,19 @@ mqs │ │ │ ├── jsonschema-specifications [required: >=2023.03.6, installed: 2023.12.1] │ │ │ │ └── referencing [required: >=0.31.0, installed: 0.31.1] │ │ │ │ ├── attrs [required: >=22.2.0, installed: 23.2.0] -│ │ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.0] +│ │ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.1] │ │ │ ├── referencing [required: >=0.28.4, installed: 0.31.1] │ │ │ │ ├── attrs [required: >=22.2.0, installed: 23.2.0] -│ │ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.0] -│ │ │ └── rpds-py [required: >=0.7.1, installed: 0.18.0] +│ │ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.1] +│ │ │ └── rpds-py [required: >=0.7.1, installed: 0.18.1] │ │ ├── jsonschema-specifications [required: >=2023.5.2,<2024.0.0, installed: 2023.12.1] │ │ │ └── referencing [required: >=0.31.0, installed: 0.31.1] │ │ │ ├── attrs [required: >=22.2.0, installed: 23.2.0] -│ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.0] +│ │ │ └── rpds-py [required: >=0.7.0, installed: 0.18.1] │ │ └── rfc3339-validator [required: Any, installed: 0.1.4] │ │ └── six [required: Any, installed: 1.16.0] │ ├── parse [required: Any, installed: 1.20.1] -│ └── Werkzeug [required: Any, installed: 3.0.2] +│ └── Werkzeug [required: Any, installed: 3.0.3] │ └── MarkupSafe [required: >=2.1.1, installed: 2.1.5] ├── wipac-dev-tools [required: Any, installed: 1.9.1] │ ├── requests [required: Any, installed: 2.31.0] @@ -187,7 +187,7 @@ mqs │ │ ├── idna [required: >=2.5,<4, installed: 3.7] │ │ └── urllib3 [required: >=1.21.1,<3, installed: 2.2.1] │ └── typing_extensions [required: Any, installed: 4.11.0] -└── wipac-rest-tools [required: Any, installed: 1.7.3] +└── wipac-rest-tools [required: Any, installed: 1.7.4] ├── cachetools [required: Any, installed: 5.3.3] ├── PyJWT [required: !=2.6.0, installed: 2.8.0] ├── qrcode [required: Any, installed: 7.4.2] diff --git a/mqs/rest_handlers/mqgroup_handlers.py b/mqs/rest_handlers/mqgroup_handlers.py index e80a5c3..c315223 100644 --- a/mqs/rest_handlers/mqgroup_handlers.py +++ b/mqs/rest_handlers/mqgroup_handlers.py @@ -10,7 +10,7 @@ from . import auth from .base_handlers import BaseMQSHandler -from .. import config +from .. import config, scheduling from ..database.client import DocumentNotFoundException LOGGER = logging.getLogger(__name__) @@ -27,6 +27,12 @@ async def post(self) -> None: """Handle POST requests.""" criteria: dict[str, int] = self.get_argument("criteria") + # check criteria + if not scheduling.criteria_is_acceptable(criteria): + self.set_status(202) + self.write(dict(try_again_later=True)) + return + mqgroup_id = uuid.uuid4().hex now = int(time.time()) diff --git a/mqs/scheduling.py b/mqs/scheduling.py new file mode 100644 index 0000000..92a3813 --- /dev/null +++ b/mqs/scheduling.py @@ -0,0 +1,6 @@ +"""The scheduling logic.""" + + +def criteria_is_acceptable(criteria: dict[str, int]) -> bool: + """Return whether the criteria is acceptable for the current moment.""" + return True diff --git a/mqs/schema/rest/openapi_spec.json b/mqs/schema/rest/openapi_spec.json index afd174a..372f5ce 100644 --- a/mqs/schema/rest/openapi_spec.json +++ b/mqs/schema/rest/openapi_spec.json @@ -151,6 +151,25 @@ } } }, + "202": { + "description": "sent when client should try again later", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "try_again_later": { + "type": "bool" + } + }, + "required": [ + "try_again_later" + ], + "additionalProperties": false + } + } + } + }, "400": { "description": "invalid request arguments", "content": { diff --git a/schema-precompiled/paths/mq-group.json b/schema-precompiled/paths/mq-group.json index 6ab5ffb..89a3424 100644 --- a/schema-precompiled/paths/mq-group.json +++ b/schema-precompiled/paths/mq-group.json @@ -42,6 +42,25 @@ } } }, + "202": { + "description": "sent when client should try again later", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "try_again_later": { + "type": "bool" + } + }, + "required": [ + "try_again_later" + ], + "additionalProperties": false + } + } + } + }, "400": { "description": "invalid request arguments", "content": {