ul-api-utils 7.9.5__tar.gz → 7.9.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ul-api-utils might be problematic. Click here for more details.
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/PKG-INFO +1 -1
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/example/conf.py +2 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/example/main.py +4 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/example/routes/api_some.py +1 -22
- ul-api-utils-7.9.7/example/sockets/on_connect.py +16 -0
- ul-api-utils-7.9.7/example/sockets/on_disconnect.py +14 -0
- ul-api-utils-7.9.7/example/sockets/on_json.py +10 -0
- ul-api-utils-7.9.7/example/sockets/on_message.py +9 -0
- ul-api-utils-7.9.7/example/sockets/on_open.py +16 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/setup.py +2 -1
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/commands/cmd_generate_api_docs.py +1 -1
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/modules/api_sdk.py +24 -13
- ul-api-utils-7.9.7/ul_api_utils/validators/__tests__/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils.egg-info/PKG-INFO +1 -1
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils.egg-info/SOURCES.txt +6 -1
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils.egg-info/requires.txt +1 -0
- ul-api-utils-7.9.5/ul_api_utils/resources/sockets.py +0 -3
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/LICENSE +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/README.md +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/example/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/example/models/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/example/permissions.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/example/pure_flask_example.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/example/rate_limit_load.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/example/routes/__init__.py +0 -0
- {ul-api-utils-7.9.5/example/workers → ul-api-utils-7.9.7/example/sockets}/__init__.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils → ul-api-utils-7.9.7/example/workers}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/example/workers/worker.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/setup.cfg +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/api_resource → ul-api-utils-7.9.7/ul_api_utils}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/access/__init__.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/commands → ul-api-utils-7.9.7/ul_api_utils/api_resource}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/api_resource/api_request.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/api_resource/api_resource.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/api_resource/api_resource_config.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/api_resource/api_resource_error_handling.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/api_resource/api_resource_fn_typing.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/api_resource/api_resource_type.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/api_resource/api_response.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/api_resource/api_response_db.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/api_resource/api_response_payload_alias.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/api_resource/db_types.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/api_resource/signature_check.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/commands/start → ul-api-utils-7.9.7/ul_api_utils/commands}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/commands/cmd_enc_keys.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/commands/cmd_gen_api_user_token.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/commands/cmd_gen_new_api_user.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/commands/cmd_start.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/commands/cmd_worker_start.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/debug → ul-api-utils-7.9.7/ul_api_utils/commands/start}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/commands/start/gunicorn.conf.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/commands/start/wsgi.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/conf/ul-debugger-main.js +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/conf/ul-debugger-ui.js +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/conf.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/const.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/encrypt → ul-api-utils-7.9.7/ul_api_utils/debug}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/debug/debugger.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/debug/malloc.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/debug/stat.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/internal_api → ul-api-utils-7.9.7/ul_api_utils/encrypt}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/encrypt/encrypt_decrypt_abstract.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/encrypt/encrypt_decrypt_aes_xtea.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/errors.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/internal_api/__tests__ → ul-api-utils-7.9.7/ul_api_utils/internal_api}/__init__.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/modules → ul-api-utils-7.9.7/ul_api_utils/internal_api/__tests__}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/internal_api/__tests__/internal_api.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/internal_api/__tests__/internal_api_content_type.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/internal_api/internal_api.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/internal_api/internal_api_check_context.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/internal_api/internal_api_error.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/internal_api/internal_api_response.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/main.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/modules/__tests__ → ul-api-utils-7.9.7/ul_api_utils/modules}/__init__.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/resources → ul-api-utils-7.9.7/ul_api_utils/modules/__tests__}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/modules/__tests__/test_api_sdk_jwt.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/modules/api_sdk_config.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/modules/api_sdk_jwt.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/modules/intermediate_state.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/modules/worker_context.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/modules/worker_sdk.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/modules/worker_sdk_config.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/py.typed +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/resources/health_check → ul-api-utils-7.9.7/ul_api_utils/resources}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/resources/caching.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/resources/debugger_scripts.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/resources/web_forms → ul-api-utils-7.9.7/ul_api_utils/resources/health_check}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/resources/health_check/const.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/resources/health_check/health_check.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/resources/health_check/health_check_template.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/resources/health_check/resource.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/resources/not_implemented.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/resources/permissions.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/resources/rate_limitter.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/resources/swagger.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/resources/web_forms/custom_fields → ul-api-utils-7.9.7/ul_api_utils/resources/web_forms}/__init__.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/resources/web_forms/custom_widgets → ul-api-utils-7.9.7/ul_api_utils/resources/web_forms/custom_fields}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/resources/web_forms/custom_fields/custom_checkbox_select.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/utils → ul-api-utils-7.9.7/ul_api_utils/resources/web_forms/custom_widgets}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/resources/web_forms/custom_widgets/custom_select_widget.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/resources/web_forms/custom_widgets/custom_text_input_widget.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/resources/web_forms/uni_form.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/sentry.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/utils/__tests__ → ul-api-utils-7.9.7/ul_api_utils/utils}/__init__.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/utils/flask_swagger_generator → ul-api-utils-7.9.7/ul_api_utils/utils/__tests__}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/__tests__/api_path_version.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/__tests__/unwrap_typing.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/api_encoding.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/api_format.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/api_method.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/api_pagination.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/api_path_version.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/api_request_info.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/avro.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/broker_topics_message_count.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/cached_per_request.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/colors.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/constants.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/decode_base64.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/deprecated.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/flags.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/utils/flask_swagger_generator/specifiers → ul-api-utils-7.9.7/ul_api_utils/utils/flask_swagger_generator}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/flask_swagger_generator/conf.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/flask_swagger_generator/exceptions.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/utils/flask_swagger_generator/utils → ul-api-utils-7.9.7/ul_api_utils/utils/flask_swagger_generator/specifiers}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/flask_swagger_generator/specifiers/swagger_models.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/flask_swagger_generator/specifiers/swagger_specifier.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/flask_swagger_generator/specifiers/swagger_three_specifier.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/flask_swagger_generator/specifiers/swagger_version.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/utils/jinja → ul-api-utils-7.9.7/ul_api_utils/utils/flask_swagger_generator/utils}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/flask_swagger_generator/utils/input_type.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/flask_swagger_generator/utils/parameter_type.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/flask_swagger_generator/utils/replace_in_dict.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/flask_swagger_generator/utils/request_type.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/flask_swagger_generator/utils/schema_type.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/flask_swagger_generator/utils/security_type.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/imports.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/validators → ul-api-utils-7.9.7/ul_api_utils/utils/jinja}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/jinja/t_url_for.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/jinja/to_pretty_json.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/json_encoder.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/load_modules.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/token_check.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/token_check_through_request.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/unwrap_typing.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/uuid_converter.py +0 -0
- {ul-api-utils-7.9.5/ul_api_utils/validators/__tests__ → ul-api-utils-7.9.7/ul_api_utils/validators}/__init__.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/validators/__tests__/test_custom_fields.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/validators/custom_fields.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/validators/validate_empty_object.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/validators/validate_uuid.py +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils.egg-info/dependency_links.txt +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils.egg-info/entry_points.txt +0 -0
- {ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils.egg-info/top_level.txt +0 -0
|
@@ -10,6 +10,8 @@ from example.permissions import permissions
|
|
|
10
10
|
sdk = ApiSdk(ApiSdkConfig(
|
|
11
11
|
sockets_config=SocketIOConfig(
|
|
12
12
|
message_queue='redis://localhost:16379',
|
|
13
|
+
logs_enabled=True,
|
|
14
|
+
engineio_logs_enabled=False,
|
|
13
15
|
),
|
|
14
16
|
service_name='example_service',
|
|
15
17
|
permissions=permissions,
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
from time import sleep
|
|
3
3
|
from datetime import datetime, timedelta
|
|
4
|
-
from typing import List, Optional, Tuple
|
|
4
|
+
from typing import List, Optional, Tuple
|
|
5
5
|
|
|
6
|
-
from flask_socketio import emit
|
|
7
6
|
|
|
8
|
-
from ul_api_utils.resources.sockets import socket_io
|
|
9
7
|
from flask import jsonify
|
|
10
8
|
from pydantic import BaseModel
|
|
11
9
|
from ul_db_utils.modules.postgres_modules.db import db
|
|
12
10
|
from werkzeug import Response as BaseResponse
|
|
13
|
-
from flask import request
|
|
14
11
|
from example.conf import sdk
|
|
15
12
|
from example.permissions import SOME_PERMISSION, SOME_PERMISSION2
|
|
16
13
|
from ul_api_utils.api_resource.api_request import ApiRequestQuery
|
|
@@ -321,21 +318,3 @@ def somefile(api_resource: ApiResource) -> FileApiResponse:
|
|
|
321
318
|
as_attachment=True,
|
|
322
319
|
attachment_filename='import_devices_log.txt',
|
|
323
320
|
)
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
@socket_io.on('message')
|
|
327
|
-
def handle(data: Any, message: Any) -> None:
|
|
328
|
-
sid = request.sid
|
|
329
|
-
emit('message', {"data1": 1, "data": 2}, room=sid)
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
@socket_io.event
|
|
333
|
-
def connect():
|
|
334
|
-
logger.info("Connected!")
|
|
335
|
-
logger.info("SESSION INFO: " + str(request.sid))
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
@socket_io.event('disconnect')
|
|
339
|
-
def disconnect():
|
|
340
|
-
logger.info("Client disconnected!")
|
|
341
|
-
logger.info("SESSION INFO: " + str(request.sid))
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
from flask import request
|
|
4
|
+
from flask_socketio import emit # type: ignore
|
|
5
|
+
|
|
6
|
+
from example.conf import sdk
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
logger = logging.getLogger(__name__)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@sdk.socket.on('connect')
|
|
13
|
+
def handle_connect() -> None:
|
|
14
|
+
logger.info("Connected!")
|
|
15
|
+
logger.info("SESSION INFO: " + str(request.sid)) # type: ignore
|
|
16
|
+
emit('message', {"data1": 1, "data": 2}, room=request.sid, broadcast=True) # type: ignore
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
from flask import request
|
|
4
|
+
|
|
5
|
+
from example.conf import sdk
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
logger = logging.getLogger(__name__)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@sdk.socket.on('disconnect')
|
|
12
|
+
def disconnect() -> None:
|
|
13
|
+
logger.info("Client disconnected!")
|
|
14
|
+
logger.info("SESSION INFO: " + str(request.sid)) # type: ignore
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
from flask import request
|
|
4
|
+
from flask_socketio import emit # type: ignore
|
|
5
|
+
|
|
6
|
+
from example.conf import sdk
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
logger = logging.getLogger(__name__)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@sdk.socket.on('open')
|
|
13
|
+
def handle_open() -> None:
|
|
14
|
+
logger.info("Connected!")
|
|
15
|
+
logger.info("SESSION INFO: " + str(request.sid)) # type: ignore
|
|
16
|
+
emit('message', {"data1": 1, "data": 2}, room=request.sid, broadcast=True) # type: ignore
|
|
@@ -9,7 +9,7 @@ with open(path.join(HERE, 'README.md'), encoding='utf-8') as f:
|
|
|
9
9
|
|
|
10
10
|
setup(
|
|
11
11
|
name='ul-api-utils',
|
|
12
|
-
version='7.9.
|
|
12
|
+
version='7.9.7',
|
|
13
13
|
description='Python api utils',
|
|
14
14
|
author='Unic-lab',
|
|
15
15
|
long_description=long_description,
|
|
@@ -62,6 +62,7 @@ setup(
|
|
|
62
62
|
"pyjwt==2.4.0",
|
|
63
63
|
"gunicorn==20.1.0",
|
|
64
64
|
"gevent==24.2.1",
|
|
65
|
+
"gevent-websocket==0.10.1",
|
|
65
66
|
"pyyaml==6.0",
|
|
66
67
|
"requests==2.28.1",
|
|
67
68
|
"cryptography==38.0.1",
|
|
@@ -6,7 +6,7 @@ import inspect
|
|
|
6
6
|
import os
|
|
7
7
|
import logging
|
|
8
8
|
from datetime import datetime
|
|
9
|
-
from typing import Dict, Callable, Any, List, TextIO
|
|
9
|
+
from typing import Dict, Callable, Any, List, TextIO
|
|
10
10
|
from flask import url_for, Flask
|
|
11
11
|
from ul_py_tool.commands.cmd import Cmd
|
|
12
12
|
|
|
@@ -8,7 +8,7 @@ from base64 import b64decode
|
|
|
8
8
|
from datetime import datetime
|
|
9
9
|
from functools import wraps
|
|
10
10
|
from typing import List, Union, Callable, Tuple, Any, Optional, TypeVar, cast, Set, TYPE_CHECKING
|
|
11
|
-
from
|
|
11
|
+
from flask_socketio import SocketIO # type: ignore
|
|
12
12
|
from flask import Response, request, Flask, url_for as flask_url_for, _app_ctx_stack
|
|
13
13
|
from pydantic import BaseModel
|
|
14
14
|
from redis.connection import parse_url
|
|
@@ -50,6 +50,7 @@ from ul_api_utils.utils.load_modules import load_modules_by_template
|
|
|
50
50
|
from ul_api_utils.utils.uuid_converter import UUID4Converter
|
|
51
51
|
|
|
52
52
|
if TYPE_CHECKING:
|
|
53
|
+
import flask_socketio
|
|
53
54
|
import flask_sqlalchemy
|
|
54
55
|
from flask_mongoengine import MongoEngine # type: ignore # lib without mypy stubs
|
|
55
56
|
from ul_db_utils.modules.postgres_modules.db import DbConfig
|
|
@@ -105,6 +106,7 @@ class ApiSdk:
|
|
|
105
106
|
'_templates_dir',
|
|
106
107
|
'_fn_registry',
|
|
107
108
|
'_flask_app_cache',
|
|
109
|
+
'_sio',
|
|
108
110
|
'_limiter_enabled',
|
|
109
111
|
'_cache',
|
|
110
112
|
'_db',
|
|
@@ -120,7 +122,7 @@ class ApiSdk:
|
|
|
120
122
|
self._flask_app_cache: Optional[Flask] = None
|
|
121
123
|
self._limiter_enabled = False
|
|
122
124
|
self._cache = None
|
|
123
|
-
|
|
125
|
+
self._sio: Optional['flask_socketio.SocketIO'] = None
|
|
124
126
|
self._templates_dir = os.path.join(APPLICATION_DIR, 'templates')
|
|
125
127
|
|
|
126
128
|
self._fn_registry: List[ApiSdkResource] = []
|
|
@@ -130,7 +132,14 @@ class ApiSdk:
|
|
|
130
132
|
def config(self) -> ApiSdkConfig:
|
|
131
133
|
return self._config
|
|
132
134
|
|
|
135
|
+
@property
|
|
136
|
+
def socket(self) -> 'flask_socketio.SocketIO':
|
|
137
|
+
assert self._sio is not None, "SocketIO is not configured, try adding SocketIOConfig to your ApiSdk first."
|
|
138
|
+
return self._sio
|
|
139
|
+
|
|
133
140
|
def init_with_flask(self, app_name: str, *, db_config: Optional['MongoDbConfig'] | Optional['DbConfig'] = None) -> Flask:
|
|
141
|
+
if self.config.sockets_config:
|
|
142
|
+
self._sio = SocketIO()
|
|
134
143
|
self._initialized_flask_name = try_init(self, app_name)
|
|
135
144
|
|
|
136
145
|
if db_config is not None and type(db_config).__name__ == 'MongoDbConfig':
|
|
@@ -199,17 +208,6 @@ class ApiSdk:
|
|
|
199
208
|
|
|
200
209
|
load_swagger(self, self._fn_registry, self._config.api_route_path_prefix)
|
|
201
210
|
|
|
202
|
-
if self.config.sockets_config:
|
|
203
|
-
socket_io.init_app(
|
|
204
|
-
self._flask_app,
|
|
205
|
-
message_queue=self.config.sockets_config.message_queue,
|
|
206
|
-
async_mode=SocketAsyncModesEnum.GEVENT.value,
|
|
207
|
-
channel=self.config.sockets_config.channel,
|
|
208
|
-
cors_allowed_origins=self.config.sockets_config.cors_allowed_origins,
|
|
209
|
-
logger=self.config.sockets_config.logs_enabled,
|
|
210
|
-
engineio_logger=self.config.sockets_config.engineio_logs_enabled,
|
|
211
|
-
)
|
|
212
|
-
|
|
213
211
|
return self._flask_app
|
|
214
212
|
|
|
215
213
|
@property
|
|
@@ -257,6 +255,19 @@ class ApiSdk:
|
|
|
257
255
|
debugger_enabled=self._debugger_enabled_with_pin,
|
|
258
256
|
))
|
|
259
257
|
|
|
258
|
+
if self.config.sockets_config:
|
|
259
|
+
assert self._sio # mypy
|
|
260
|
+
self._sio.init_app(
|
|
261
|
+
flask_app,
|
|
262
|
+
message_queue=self.config.sockets_config.message_queue,
|
|
263
|
+
async_mode=SocketAsyncModesEnum.GEVENT.value,
|
|
264
|
+
channel=self.config.sockets_config.channel,
|
|
265
|
+
cors_allowed_origins=self.config.sockets_config.cors_allowed_origins,
|
|
266
|
+
logger=self.config.sockets_config.logs_enabled,
|
|
267
|
+
engineio_logger=self.config.sockets_config.engineio_logs_enabled,
|
|
268
|
+
)
|
|
269
|
+
load_modules_by_template([os.path.join(APPLICATION_DIR, 'sockets', '*')])
|
|
270
|
+
|
|
260
271
|
return flask_app
|
|
261
272
|
|
|
262
273
|
@property
|
|
File without changes
|
|
@@ -10,6 +10,12 @@ example/rate_limit_load.py
|
|
|
10
10
|
example/models/__init__.py
|
|
11
11
|
example/routes/__init__.py
|
|
12
12
|
example/routes/api_some.py
|
|
13
|
+
example/sockets/__init__.py
|
|
14
|
+
example/sockets/on_connect.py
|
|
15
|
+
example/sockets/on_disconnect.py
|
|
16
|
+
example/sockets/on_json.py
|
|
17
|
+
example/sockets/on_message.py
|
|
18
|
+
example/sockets/on_open.py
|
|
13
19
|
example/workers/__init__.py
|
|
14
20
|
example/workers/worker.py
|
|
15
21
|
ul_api_utils/__init__.py
|
|
@@ -81,7 +87,6 @@ ul_api_utils/resources/debugger_scripts.py
|
|
|
81
87
|
ul_api_utils/resources/not_implemented.py
|
|
82
88
|
ul_api_utils/resources/permissions.py
|
|
83
89
|
ul_api_utils/resources/rate_limitter.py
|
|
84
|
-
ul_api_utils/resources/sockets.py
|
|
85
90
|
ul_api_utils/resources/swagger.py
|
|
86
91
|
ul_api_utils/resources/health_check/__init__.py
|
|
87
92
|
ul_api_utils/resources/health_check/const.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.9.5/ul_api_utils/api_resource → ul-api-utils-7.9.7/ul_api_utils}/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/api_resource/api_resource_error_handling.py
RENAMED
|
File without changes
|
{ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/api_resource/api_resource_fn_typing.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/api_resource/api_response_payload_alias.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.9.5/ul_api_utils/debug → ul-api-utils-7.9.7/ul_api_utils/commands/start}/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.9.5/ul_api_utils/encrypt → ul-api-utils-7.9.7/ul_api_utils/debug}/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.9.5/ul_api_utils/internal_api → ul-api-utils-7.9.7/ul_api_utils/encrypt}/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/internal_api/__tests__/internal_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/internal_api/internal_api_check_context.py
RENAMED
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/internal_api/internal_api_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/modules/__tests__/test_api_sdk_jwt.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/resources/health_check/health_check.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/flask_swagger_generator/conf.py
RENAMED
|
File without changes
|
{ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/utils/flask_swagger_generator/exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.9.5 → ul-api-utils-7.9.7}/ul_api_utils/validators/__tests__/test_custom_fields.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|