arpakitlib 1.7.40__py3-none-any.whl → 1.7.43__py3-none-any.whl
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.
- arpakitlib/_arpakit_project_template/src/api/auth.py +6 -0
- arpakitlib/_arpakit_project_template/src/api/util.py +0 -0
- arpakitlib/_arpakit_project_template/src/core/settings.py +2 -0
- arpakitlib/api_key_util.py +1 -1
- arpakitlib/ar_fastapi_static/healthcheck +1 -0
- arpakitlib/ar_fastapi_util.py +9 -16
- arpakitlib/ar_file_util.py +14 -0
- arpakitlib/ar_type_util.py +1 -1
- {arpakitlib-1.7.40.dist-info → arpakitlib-1.7.43.dist-info}/METADATA +1 -1
- {arpakitlib-1.7.40.dist-info → arpakitlib-1.7.43.dist-info}/RECORD +14 -11
- {arpakitlib-1.7.40.dist-info → arpakitlib-1.7.43.dist-info}/LICENSE +0 -0
- {arpakitlib-1.7.40.dist-info → arpakitlib-1.7.43.dist-info}/NOTICE +0 -0
- {arpakitlib-1.7.40.dist-info → arpakitlib-1.7.43.dist-info}/WHEEL +0 -0
- {arpakitlib-1.7.40.dist-info → arpakitlib-1.7.43.dist-info}/entry_points.txt +0 -0
File without changes
|
@@ -31,6 +31,8 @@ class Settings(SimpleSettings):
|
|
31
31
|
|
32
32
|
api_port: int | None = int("{API_PORT}") if "{API_PORT}".isdigit() else None
|
33
33
|
|
34
|
+
api_correct_api_key: str | None = None
|
35
|
+
|
34
36
|
var_dirname: str | None = "var"
|
35
37
|
|
36
38
|
var_dirpath: str | None = os.path.join(BASE_DIRPATH, var_dirname)
|
arpakitlib/api_key_util.py
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
Healthcheck
|
arpakitlib/ar_fastapi_util.py
CHANGED
@@ -32,7 +32,7 @@ from arpakitlib.ar_json_util import safely_transfer_to_json_str_to_json_obj
|
|
32
32
|
from arpakitlib.ar_logging_util import setup_normal_logging
|
33
33
|
from arpakitlib.ar_sqlalchemy_model_util import StoryLogDBM
|
34
34
|
from arpakitlib.ar_sqlalchemy_util import SQLAlchemyDB
|
35
|
-
from arpakitlib.ar_type_util import raise_for_type, raise_if_not_async_func
|
35
|
+
from arpakitlib.ar_type_util import raise_for_type, raise_if_not_async_func, raise_if_none
|
36
36
|
|
37
37
|
_ARPAKIT_LIB_MODULE_VERSION = "3.0"
|
38
38
|
|
@@ -529,26 +529,20 @@ def base_api_auth(
|
|
529
529
|
|
530
530
|
|
531
531
|
class CheckAPIKeyAPIAuthData(BaseAPIAuthData):
|
532
|
-
require_check_api_key: bool = False
|
533
532
|
is_api_key_correct: bool | None = None
|
534
533
|
|
535
534
|
|
536
|
-
def
|
535
|
+
def is_api_key_correct_api_auth(
|
537
536
|
*,
|
538
|
-
|
539
|
-
check_api_key_func: Callable | None = None,
|
537
|
+
validate_api_key_func: Callable | None = None,
|
540
538
|
correct_api_key: str | None = None
|
541
539
|
):
|
542
|
-
|
543
|
-
require_api_key_string = True
|
544
|
-
else:
|
545
|
-
require_api_key_string = False
|
540
|
+
require_api_key_string = True
|
546
541
|
|
547
542
|
if correct_api_key is not None:
|
548
|
-
|
543
|
+
validate_api_key_func = lambda **kwargs: kwargs["api_key_string"] == correct_api_key
|
549
544
|
|
550
|
-
|
551
|
-
raise ValueError("require_check_api_key and check_api_key_func is None")
|
545
|
+
raise_if_none(validate_api_key_func)
|
552
546
|
|
553
547
|
async def func(
|
554
548
|
*,
|
@@ -560,18 +554,17 @@ def check_api_key_api_auth(
|
|
560
554
|
request: starlette.requests.Request
|
561
555
|
) -> CheckAPIKeyAPIAuthData:
|
562
556
|
check_api_key_api_auth_data = CheckAPIKeyAPIAuthData.model_validate(base_api_auth_data)
|
563
|
-
check_api_key_api_auth_data.require_check_api_key = require_check_api_key
|
564
557
|
check_api_key_api_auth_data.is_api_key_correct = (
|
565
|
-
|
558
|
+
validate_api_key_func(
|
566
559
|
api_key_string=base_api_auth_data.api_key_string,
|
567
560
|
base_api_auth_data=base_api_auth_data,
|
568
561
|
transmitted_api_data=transmitted_api_data,
|
569
562
|
request=request
|
570
563
|
)
|
571
|
-
if
|
564
|
+
if validate_api_key_func is not None else None
|
572
565
|
)
|
573
566
|
|
574
|
-
if
|
567
|
+
if not check_api_key_api_auth_data.is_api_key_correct:
|
575
568
|
raise APIException(
|
576
569
|
status_code=starlette.status.HTTP_401_UNAUTHORIZED,
|
577
570
|
error_code=ErrorSO.APIErrorCodes.cannot_authorize,
|
arpakitlib/ar_file_util.py
CHANGED
@@ -4,3 +4,17 @@ import os
|
|
4
4
|
def raise_if_path_not_exists(path: str):
|
5
5
|
if not os.path.exists(path):
|
6
6
|
raise Exception(f"path {path} not exists")
|
7
|
+
|
8
|
+
|
9
|
+
def clear_text_file(filepath: str):
|
10
|
+
if not os.path.exists(filepath):
|
11
|
+
return
|
12
|
+
with open(filepath, mode="w") as f:
|
13
|
+
f.write("")
|
14
|
+
|
15
|
+
|
16
|
+
def create_text_file(filepath: str, text: str = ""):
|
17
|
+
if os.path.exists(filepath):
|
18
|
+
return
|
19
|
+
with open(filepath, mode="w") as f:
|
20
|
+
f.write(text)
|
arpakitlib/ar_type_util.py
CHANGED
@@ -71,6 +71,7 @@ arpakitlib/_arpakit_project_template/src/additional_model/__init__.py,sha256=47D
|
|
71
71
|
arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py,sha256=4KCOvto9Hj5eMYpvfaJChghhR9bkCvKluGGPWrTezoY,134
|
72
72
|
arpakitlib/_arpakit_project_template/src/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
73
73
|
arpakitlib/_arpakit_project_template/src/api/asgi.py,sha256=a5UBxOyNC8NG3E0ayhiDo3t5tPoB3WtOf2gbZJFWBAA,74
|
74
|
+
arpakitlib/_arpakit_project_template/src/api/auth.py,sha256=Ljq_VjjiAaW3HEzq60nkSI-HkHfuv6j5-8Q6Qs8V9bU,261
|
74
75
|
arpakitlib/_arpakit_project_template/src/api/create_api_app.py,sha256=uDEnLAPugb3rXuuJDMkfs8i6aIGYo0-_JP-PG6Spdr4,4496
|
75
76
|
arpakitlib/_arpakit_project_template/src/api/event.py,sha256=58wCVyVSIe_kydWi44M0Wvp7bTnV8xvO30gMXzjbFYc,750
|
76
77
|
arpakitlib/_arpakit_project_template/src/api/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -82,10 +83,11 @@ arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py,sha256=47DEQpj8HBS
|
|
82
83
|
arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
83
84
|
arpakitlib/_arpakit_project_template/src/api/start_api_for_dev.py,sha256=BwROGTR8Hm1ewx_Z0k8HXeql4RIItCdCtP_hmhTT_PM,344
|
84
85
|
arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py,sha256=YtpATqzN216e76W5QOuzN-Vo6343PVDiHpKWYQ6oqyU,278
|
86
|
+
arpakitlib/_arpakit_project_template/src/api/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
85
87
|
arpakitlib/_arpakit_project_template/src/business_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
86
88
|
arpakitlib/_arpakit_project_template/src/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
87
89
|
arpakitlib/_arpakit_project_template/src/core/const.py,sha256=CZZew674y7LhCAlYhvuF5cV4Zb9nQ17j2Tcuj2GEBf4,1232
|
88
|
-
arpakitlib/_arpakit_project_template/src/core/settings.py,sha256=
|
90
|
+
arpakitlib/_arpakit_project_template/src/core/settings.py,sha256=Rg90TaiilxSxqvfeqrFeZNIXxrvfWgvwYME9ErHJ200,2058
|
89
91
|
arpakitlib/_arpakit_project_template/src/core/util.py,sha256=J1_AiI4DW_VB8ldLNATP6mjxz254CSxceGcqUbT0SVU,2006
|
90
92
|
arpakitlib/_arpakit_project_template/src/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
91
93
|
arpakitlib/_arpakit_project_template/src/db/sqlalchemy_model.py,sha256=nXtayUkBaVb6tWx5qJgXZLbLOTVAjnSLpSDxBm7yZLc,234
|
@@ -102,7 +104,7 @@ arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py,sha256=89
|
|
102
104
|
arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py,sha256=BlVvIhSFclBMQMHftETS57bRaFpkOdKPrZyxMbYJuDY,80
|
103
105
|
arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py,sha256=7ruCZevqJoLSdqL1OEJWUy3YPCOHQif7JqVTKxZ9acM,80
|
104
106
|
arpakitlib/_arpakit_project_template/src/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
105
|
-
arpakitlib/api_key_util.py,sha256=
|
107
|
+
arpakitlib/api_key_util.py,sha256=DtzREor5h70XlZOv1ounNoPHL5_cc0YA28SaHvlFaWs,224
|
106
108
|
arpakitlib/ar_additional_model_util.py,sha256=tNzZhZtvtJ1qC6Cn4UnyoEL58HudfpCdQy5ftkCqyik,473
|
107
109
|
arpakitlib/ar_aiogram_util.py,sha256=5JPCDZpdBGTE-EIWPRez9amCZAX7XemFIVu5YrQK7Pw,12264
|
108
110
|
arpakitlib/ar_arpakit_lib_module_util.py,sha256=V_mc3Ml73Tzz3arxmwEfIxruKMyrwbe8XZ9FfVDtUXY,5446
|
@@ -117,6 +119,7 @@ arpakitlib/ar_dict_util.py,sha256=cF5LQJ6tLqyGoEXfDljMDZrikeZoWPw7CgINHIFGvXM,41
|
|
117
119
|
arpakitlib/ar_dream_ai_api_client_util.py,sha256=QF9XK7xK5ny1fvkcG4e0pfCySNNFRNPy0x0cmxfsAak,2818
|
118
120
|
arpakitlib/ar_encrypt_decrypt_util.py,sha256=GhWnp7HHkbhwFVVCzO1H07m-5gryr4yjWsXjOaNQm1Y,520
|
119
121
|
arpakitlib/ar_enumeration_util.py,sha256=0DN46uyI0Gu9JPDgso3XPbnre7hZZefYTZwmmE1iYH4,2250
|
122
|
+
arpakitlib/ar_fastapi_static/healthcheck,sha256=IIO7Wvjwlr2-LPSQ7Y8O35hcI6t0_s8zqITDxkYCO8I,11
|
120
123
|
arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js,sha256=WCuodUNv1qVh0oW5fjnJDwb5AwOue73jKHdI9z8iGKU,909365
|
121
124
|
arpakitlib/ar_fastapi_static/swagger-ui/favicon-16x16.png,sha256=ryStYE3Xs7zaj5dauXMHX0ovcKQIeUShL474tjo-B8I,665
|
122
125
|
arpakitlib/ar_fastapi_static/swagger-ui/favicon-32x32.png,sha256=PtYS9B4FDKXnAAytbxy-fn2jn2X8qZwC6Z5lkQVuWDc,628
|
@@ -136,9 +139,9 @@ arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css,sha256=jzPZlgJTFwSdSphk9C
|
|
136
139
|
arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map,sha256=5wq8eXMLU6Zxb45orZPL1zAsBFJReFw6GjYqGpUX3hg,262650
|
137
140
|
arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js,sha256=ffrLZHHEQ_g84A-ul3yWa10Kk09waOAxHcQXPuZuavg,339292
|
138
141
|
arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map,sha256=9UhIW7MqCOZPAz1Sl1IKfZUuhWU0p-LJqrnjjJD9Xhc,1159454
|
139
|
-
arpakitlib/ar_fastapi_util.py,sha256=
|
142
|
+
arpakitlib/ar_fastapi_util.py,sha256=EL4tO7jQKArbvVvNOXaDx-pJDB1cOedWm1YiXBTzsG8,24320
|
140
143
|
arpakitlib/ar_file_storage_in_dir_util.py,sha256=D3e3rGuHoI6xqAA5mVvEpVVpOWY1jyjNsjj2UhyHRbE,3674
|
141
|
-
arpakitlib/ar_file_util.py,sha256=
|
144
|
+
arpakitlib/ar_file_util.py,sha256=07xCF7paAUP2JUyfpeX0l3N1oCSma7qAcBmrCIZVi3g,452
|
142
145
|
arpakitlib/ar_hash_util.py,sha256=Iqy6KBAOLBQMFLWv676boI5sV7atT2B-fb7aCdHOmIQ,340
|
143
146
|
arpakitlib/ar_http_request_util.py,sha256=DfzITtgbWJLkyaAIa0cBZZZqLE0EXx-TsHZkiaRy3Tg,3649
|
144
147
|
arpakitlib/ar_ip_util.py,sha256=aEAa1Hvobh9DWX7cmBAPLqnXSTiKe2hRk-WJaiKMaI8,1009
|
@@ -162,12 +165,12 @@ arpakitlib/ar_sqlalchemy_model_util.py,sha256=TFGOAgpxcnBV_u7yZrLCkf1ldlB4Of8vIR
|
|
162
165
|
arpakitlib/ar_sqlalchemy_util.py,sha256=Hcg1THrDsSR_-8dsY1CG3NWPEv0FqCbkPXFXLtjlSJ0,4207
|
163
166
|
arpakitlib/ar_ssh_runner_util.py,sha256=jlnss4V4pziBN1rBzoK_lDiWm6nMOqGXfa6NFJSKH-Y,6796
|
164
167
|
arpakitlib/ar_str_util.py,sha256=oCEtQ_TTn35OEz9jCNLjbhopq76JmaifD_iYR-nEJJ4,2142
|
165
|
-
arpakitlib/ar_type_util.py,sha256=
|
168
|
+
arpakitlib/ar_type_util.py,sha256=99tp2xEQaAxy1D2AdpJMVIqJa7ycj72o6D8gCoJiVcY,2157
|
166
169
|
arpakitlib/ar_yookassa_api_client_util.py,sha256=sh4fcUkAkdOetFn9JYoTvjcSXP-M1wU04KEY-ECLfLg,5137
|
167
170
|
arpakitlib/ar_zabbix_api_client_util.py,sha256=Q-VR4MvoZ9aHwZeYZr9G3LwN-ANx1T5KFmF6pvPM-9M,6402
|
168
|
-
arpakitlib-1.7.
|
169
|
-
arpakitlib-1.7.
|
170
|
-
arpakitlib-1.7.
|
171
|
-
arpakitlib-1.7.
|
172
|
-
arpakitlib-1.7.
|
173
|
-
arpakitlib-1.7.
|
171
|
+
arpakitlib-1.7.43.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
|
172
|
+
arpakitlib-1.7.43.dist-info/METADATA,sha256=VN-d0OUcmbY1Pern6idUVOOZWJiELSNgr-XQ_aHLkk8,2824
|
173
|
+
arpakitlib-1.7.43.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
|
174
|
+
arpakitlib-1.7.43.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
175
|
+
arpakitlib-1.7.43.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
|
176
|
+
arpakitlib-1.7.43.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|