eclinical-requester 1.0.0__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.
- eclinical_requester-1.0.0/LICENSE +19 -0
- eclinical_requester-1.0.0/MANIFEST.in +3 -0
- eclinical_requester-1.0.0/PKG-INFO +19 -0
- eclinical_requester-1.0.0/README.md +1 -0
- eclinical_requester-1.0.0/setup.cfg +4 -0
- eclinical_requester-1.0.0/setup.py +47 -0
- eclinical_requester-1.0.0/src/api_requester/__init__.py +9 -0
- eclinical_requester-1.0.0/src/api_requester/core/admin/api/auth_api.py +34 -0
- eclinical_requester-1.0.0/src/api_requester/core/admin/api/user_on_board_application_api.py +31 -0
- eclinical_requester-1.0.0/src/api_requester/core/admin/service/auth_service.py +34 -0
- eclinical_requester-1.0.0/src/api_requester/core/admin/service/impl/system_env_service_impl.py +39 -0
- eclinical_requester-1.0.0/src/api_requester/core/admin/service/impl/user_on_board_application_service_impl.py +23 -0
- eclinical_requester-1.0.0/src/api_requester/core/admin/service/user_on_board_application_service.py +35 -0
- eclinical_requester-1.0.0/src/api_requester/core/call_api.py +64 -0
- eclinical_requester-1.0.0/src/api_requester/core/common/api/system_env_api.py +24 -0
- eclinical_requester-1.0.0/src/api_requester/core/common/service/system_env_service.py +27 -0
- eclinical_requester-1.0.0/src/api_requester/docs/application.yaml +46 -0
- eclinical_requester-1.0.0/src/api_requester/dto/admin/cross_user_user_on_board_dto.py +20 -0
- eclinical_requester-1.0.0/src/api_requester/dto/admin/jwt_authentication_request.py +20 -0
- eclinical_requester-1.0.0/src/api_requester/dto/admin/user_on_board_dto.py +29 -0
- eclinical_requester-1.0.0/src/api_requester/dto/base_dto.py +167 -0
- eclinical_requester-1.0.0/src/api_requester/dto/biz_base.py +31 -0
- eclinical_requester-1.0.0/src/api_requester/dto/user.py +39 -0
- eclinical_requester-1.0.0/src/api_requester/http/app_url.py +31 -0
- eclinical_requester-1.0.0/src/api_requester/http/authorize.py +156 -0
- eclinical_requester-1.0.0/src/api_requester/http/eclinical_requests.py +264 -0
- eclinical_requester-1.0.0/src/api_requester/http/exceptions.py +72 -0
- eclinical_requester-1.0.0/src/api_requester/http/gateway.py +105 -0
- eclinical_requester-1.0.0/src/api_requester/http/sample_headers.py +23 -0
- eclinical_requester-1.0.0/src/api_requester/http/token_manager.py +30 -0
- eclinical_requester-1.0.0/src/api_requester/utils/constant.py +108 -0
- eclinical_requester-1.0.0/src/api_requester/utils/json_utils.py +83 -0
- eclinical_requester-1.0.0/src/api_requester/utils/lib.py +456 -0
- eclinical_requester-1.0.0/src/api_requester/utils/log.py +91 -0
- eclinical_requester-1.0.0/src/api_requester/utils/path.py +21 -0
- eclinical_requester-1.0.0/src/api_requester/utils/placeholder_replacer.py +22 -0
- eclinical_requester-1.0.0/src/api_requester/utils/read_file.py +94 -0
- eclinical_requester-1.0.0/src/api_requester/utils/rsa.py +36 -0
- eclinical_requester-1.0.0/src/api_requester/utils/time_utils.py +27 -0
- eclinical_requester-1.0.0/src/eclinical_requester.egg-info/PKG-INFO +19 -0
- eclinical_requester-1.0.0/src/eclinical_requester.egg-info/SOURCES.txt +42 -0
- eclinical_requester-1.0.0/src/eclinical_requester.egg-info/dependency_links.txt +1 -0
- eclinical_requester-1.0.0/src/eclinical_requester.egg-info/requires.txt +7 -0
- eclinical_requester-1.0.0/src/eclinical_requester.egg-info/top_level.txt +1 -0
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright (c) 2018 The Python Packaging Authority
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
5
|
+
in the Software without restriction, including without limitation the rights
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
8
|
+
furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
11
|
+
copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
19
|
+
SOFTWARE.
|
@@ -0,0 +1,19 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: eclinical_requester
|
3
|
+
Version: 1.0.0
|
4
|
+
Summary: edetek api requester
|
5
|
+
Home-page: http://example.com
|
6
|
+
Author: xiaodong.li
|
7
|
+
Author-email:
|
8
|
+
Classifier: Programming Language :: Python :: 3.9
|
9
|
+
Description-Content-Type: text/markdown
|
10
|
+
License-File: LICENSE
|
11
|
+
Requires-Dist: lxml>=5.3.0
|
12
|
+
Requires-Dist: requests>=2.32.3
|
13
|
+
Requires-Dist: PyYAML>=6.0.2
|
14
|
+
Requires-Dist: requests-toolbelt>=1.0.0
|
15
|
+
Requires-Dist: python-dateutil>=2.9.0.post0
|
16
|
+
Requires-Dist: numpy>=2.0.2
|
17
|
+
Requires-Dist: pycryptodome>=3.21.0
|
18
|
+
|
19
|
+
api_requester
|
@@ -0,0 +1 @@
|
|
1
|
+
api_requester
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# !/usr/bin/python3
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
@Author: xiaodong.li
|
5
|
+
@Time: 1/8/2025 3:04 PM
|
6
|
+
@Description: Description
|
7
|
+
@File: setup.py
|
8
|
+
"""
|
9
|
+
|
10
|
+
import re
|
11
|
+
|
12
|
+
import setuptools
|
13
|
+
from setuptools import find_packages
|
14
|
+
|
15
|
+
version = ""
|
16
|
+
with open('src/api_requester/__init__.py', 'r') as fd:
|
17
|
+
version = re.search(r'^__version__\s*=\s*[\'"]([^\'"]*)[\'"]',
|
18
|
+
fd.read(), re.MULTILINE).group(1)
|
19
|
+
|
20
|
+
with open("README.md", "r") as fh:
|
21
|
+
long_description = fh.read()
|
22
|
+
|
23
|
+
setuptools.setup(
|
24
|
+
name="eclinical_requester",
|
25
|
+
version=version,
|
26
|
+
author="xiaodong.li",
|
27
|
+
author_email="",
|
28
|
+
description="edetek api requester",
|
29
|
+
long_description=long_description,
|
30
|
+
long_description_content_type="text/markdown",
|
31
|
+
url="http://example.com",
|
32
|
+
install_requires=[
|
33
|
+
'lxml>=5.3.0',
|
34
|
+
'requests>=2.32.3',
|
35
|
+
'PyYAML>=6.0.2',
|
36
|
+
'requests-toolbelt>=1.0.0',
|
37
|
+
'python-dateutil>=2.9.0.post0',
|
38
|
+
'numpy>=2.0.2',
|
39
|
+
'pycryptodome>=3.21.0',
|
40
|
+
],
|
41
|
+
packages=find_packages(where='src'),
|
42
|
+
package_dir={'': 'src'},
|
43
|
+
classifiers=[
|
44
|
+
"Programming Language :: Python :: 3.9",
|
45
|
+
],
|
46
|
+
include_package_data=True,
|
47
|
+
)
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# !/usr/bin/python3
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
@Author: xiaodong.li
|
5
|
+
@Time: 2024/04/26 19:01
|
6
|
+
@Description: Description
|
7
|
+
@File: auth_api.py
|
8
|
+
"""
|
9
|
+
from api_requester.http.eclinical_requests import *
|
10
|
+
|
11
|
+
|
12
|
+
class AdminAuthApi:
|
13
|
+
"""
|
14
|
+
The AdminAuthApi was generated by Generator from the AuthController.java file.
|
15
|
+
"""
|
16
|
+
|
17
|
+
@post('/auth')
|
18
|
+
def create_authentication_token_api(self, *args, **kwargs): ...
|
19
|
+
|
20
|
+
@get('/refresh')
|
21
|
+
def refresh_and_get_authentication_token_api(self, *args, **kwargs): ...
|
22
|
+
|
23
|
+
@get('/auth/logout')
|
24
|
+
def logout_api(self, *args, **kwargs): ...
|
25
|
+
|
26
|
+
@get('/auth/all/logout')
|
27
|
+
def logout_all_api(self, *args, **kwargs): ...
|
28
|
+
|
29
|
+
@get('/me')
|
30
|
+
def me_api(self, *args, **kwargs): ...
|
31
|
+
|
32
|
+
@post('/auth/sso/token')
|
33
|
+
def auth_sso_token_api(self, *args, **kwargs): ...
|
34
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# !/usr/bin/python3
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
@Author: xiaodong.li
|
5
|
+
@Time: 2024/04/24 20:45
|
6
|
+
@Description: Description
|
7
|
+
@File: user_on_board_application_api.py
|
8
|
+
"""
|
9
|
+
from api_requester.http.eclinical_requests import *
|
10
|
+
|
11
|
+
|
12
|
+
class AdminUserOnBoardApplicationApi:
|
13
|
+
"""
|
14
|
+
The AdminUserOnBoardApplicationApi was generated by Generator from the UserOnBoardApplicationController.java file.
|
15
|
+
"""
|
16
|
+
|
17
|
+
@get('/user/onboard/company')
|
18
|
+
def get_company_list_api(self, *args, **kwargs): ...
|
19
|
+
|
20
|
+
@get('/user/onboard/applications')
|
21
|
+
def get_user_onboard_application_list_api(self, *args, **kwargs): ...
|
22
|
+
|
23
|
+
@post('/user/onboard')
|
24
|
+
def on_board_api(self, *args, **kwargs): ...
|
25
|
+
|
26
|
+
@get('/user/entry/portal')
|
27
|
+
def entry_portal_api(self, *args, **kwargs): ...
|
28
|
+
|
29
|
+
@post('/user/entry/portal')
|
30
|
+
def login_portal_api(self, *args, **kwargs): ...
|
31
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# !/usr/bin/python3
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
@Author: xiaodong.li
|
5
|
+
@Time: 2024/09/06 14:40
|
6
|
+
@Description: Description
|
7
|
+
@File: auth_service.py
|
8
|
+
"""
|
9
|
+
from api_requester.core.admin.api.auth_api import AdminAuthApi
|
10
|
+
from api_requester.dto.admin.jwt_authentication_request import JwtAuthenticationRequest
|
11
|
+
|
12
|
+
|
13
|
+
class AdminAuthService(AdminAuthApi):
|
14
|
+
"""
|
15
|
+
The AdminAuthService was generated by Generator from the AuthController.java file.
|
16
|
+
"""
|
17
|
+
|
18
|
+
def __init__(self):
|
19
|
+
AdminAuthApi.__init__(self)
|
20
|
+
|
21
|
+
def create_authentication_token(self, authentication_request: JwtAuthenticationRequest = None):
|
22
|
+
return self.create_authentication_token_api(json=authentication_request)
|
23
|
+
|
24
|
+
def refresh_and_get_authentication_token(self):
|
25
|
+
return self.refresh_and_get_authentication_token_api()
|
26
|
+
|
27
|
+
def logout(self):
|
28
|
+
return self.logout_api()
|
29
|
+
|
30
|
+
def logout_all(self, login_name: str = None):
|
31
|
+
return self.logout_all_api(params=dict(loginName=login_name))
|
32
|
+
|
33
|
+
def me(self):
|
34
|
+
return self.me_api()
|
eclinical_requester-1.0.0/src/api_requester/core/admin/service/impl/system_env_service_impl.py
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# !/usr/bin/python3
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
@Author: xiaodong.li
|
5
|
+
@Time: 4/29/2024 2:41 PM
|
6
|
+
@Description: Description
|
7
|
+
@File: system_env_service_impl.py
|
8
|
+
"""
|
9
|
+
from api_requester.core.common.service.system_env_service import CommonSystemEnvService
|
10
|
+
from api_requester.http.token_manager import apply_token_to_headers
|
11
|
+
from api_requester.utils.log import Logger
|
12
|
+
|
13
|
+
|
14
|
+
class CommonSystemEnvServiceImpl(CommonSystemEnvService):
|
15
|
+
"""
|
16
|
+
CommonSystemEnvServiceImpl
|
17
|
+
"""
|
18
|
+
|
19
|
+
def __init__(self):
|
20
|
+
CommonSystemEnvService.__init__(self)
|
21
|
+
|
22
|
+
def switch_role(self, role, env=None):
|
23
|
+
payload = self.get_current_system_env()
|
24
|
+
if payload.get("role").get("code") == role or (env is not None and payload.get("env").get("name") == env):
|
25
|
+
return
|
26
|
+
items = self.sponsor_env_list()
|
27
|
+
if not items:
|
28
|
+
return
|
29
|
+
for item in items:
|
30
|
+
if item.get("defaultEnv"):
|
31
|
+
pass
|
32
|
+
if env is None and item.get("defaultEnv") or item.get("name") == env:
|
33
|
+
onboard_role_list = item.get("onboardRoleList")
|
34
|
+
onboard_role = next((role_dto for role_dto in onboard_role_list if role_dto.get("name") == role), None)
|
35
|
+
if onboard_role:
|
36
|
+
self.switch_env(env_id=item.get("id"), role_id=onboard_role.get("id"))
|
37
|
+
apply_token_to_headers(self)
|
38
|
+
Logger().info(f"The user switches the {role} role successfully.")
|
39
|
+
return
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# !/usr/bin/python3
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
@Author: xiaodong.li
|
5
|
+
@Time: 2024/03/19 13:55
|
6
|
+
@Description: Description
|
7
|
+
@File: user_on_board_application_service_impl.py
|
8
|
+
"""
|
9
|
+
from api_requester.core.admin.service.user_on_board_application_service import AdminUserOnBoardApplicationService
|
10
|
+
from api_requester.utils.lib import get_val_from_list
|
11
|
+
|
12
|
+
|
13
|
+
class AdminUserOnBoardApplicationServiceImpl(AdminUserOnBoardApplicationService):
|
14
|
+
"""
|
15
|
+
AdminUserOnBoardApplicationServiceImpl
|
16
|
+
"""
|
17
|
+
|
18
|
+
def __init__(self):
|
19
|
+
AdminUserOnBoardApplicationService.__init__(self)
|
20
|
+
|
21
|
+
@get_val_from_list()
|
22
|
+
def get_company_id(self, name=None):
|
23
|
+
return self.get_company_list()
|
eclinical_requester-1.0.0/src/api_requester/core/admin/service/user_on_board_application_service.py
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# !/usr/bin/python3
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
@Author: xiaodong.li
|
5
|
+
@Time: 2024/09/06 14:41
|
6
|
+
@Description: Description
|
7
|
+
@File: user_on_board_application_service.py
|
8
|
+
"""
|
9
|
+
from api_requester.core.admin.api.user_on_board_application_api import AdminUserOnBoardApplicationApi
|
10
|
+
from api_requester.dto.admin.cross_user_user_on_board_dto import CrossUserUserOnBoardDto
|
11
|
+
from api_requester.dto.admin.user_on_board_dto import UserOnBoardDto
|
12
|
+
|
13
|
+
|
14
|
+
class AdminUserOnBoardApplicationService(AdminUserOnBoardApplicationApi):
|
15
|
+
"""
|
16
|
+
The AdminUserOnBoardApplicationService was generated by Generator from the UserOnBoardApplicationController.java file.
|
17
|
+
"""
|
18
|
+
|
19
|
+
def __init__(self):
|
20
|
+
AdminUserOnBoardApplicationApi.__init__(self)
|
21
|
+
|
22
|
+
def get_company_list(self):
|
23
|
+
return self.get_company_list_api()
|
24
|
+
|
25
|
+
def get_user_onboard_application_list(self, company_id: int = None):
|
26
|
+
return self.get_user_onboard_application_list_api(params=dict(companyId=company_id))
|
27
|
+
|
28
|
+
def on_board(self, user_on_board_dto: UserOnBoardDto = None):
|
29
|
+
return self.on_board_api(json=user_on_board_dto)
|
30
|
+
|
31
|
+
def entry_portal(self):
|
32
|
+
return self.entry_portal_api()
|
33
|
+
|
34
|
+
def login_portal(self, cross_user_user_on_board_dto: CrossUserUserOnBoardDto = None):
|
35
|
+
return self.login_portal_api(json=cross_user_user_on_board_dto)
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# !/usr/bin/python3
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
@Author: xiaodong.li
|
5
|
+
@Time: 12/27/2024 2:59 PM
|
6
|
+
@Description: Description
|
7
|
+
@File: call_api.py
|
8
|
+
"""
|
9
|
+
from requests import request
|
10
|
+
|
11
|
+
from api_requester.dto.admin.user_on_board_dto import UserOnBoardDto
|
12
|
+
from api_requester.dto.biz_base import BizBase
|
13
|
+
from api_requester.dto.user import EClinicalUser
|
14
|
+
from api_requester.http.app_url import AppUrl
|
15
|
+
from api_requester.http.authorize import Authorize
|
16
|
+
from api_requester.utils.placeholder_replacer import PlaceholderReplacer
|
17
|
+
|
18
|
+
|
19
|
+
class CallApi(BizBase):
|
20
|
+
|
21
|
+
def __init__(self, username=None, password=None, sponsor=None, study=None, test_env=None, app_env=None, app=None,
|
22
|
+
company=None, role=None, external=False):
|
23
|
+
u = EClinicalUser(
|
24
|
+
username=username,
|
25
|
+
password=password,
|
26
|
+
sponsor=sponsor,
|
27
|
+
study=study,
|
28
|
+
test_env=test_env,
|
29
|
+
app_env=app_env,
|
30
|
+
app=app,
|
31
|
+
company=company,
|
32
|
+
role=role,
|
33
|
+
external=external
|
34
|
+
)
|
35
|
+
super().__init__(u)
|
36
|
+
self.headers = dict()
|
37
|
+
self.user_onboard_dto: UserOnBoardDto = UserOnBoardDto(-1)
|
38
|
+
|
39
|
+
def login(self):
|
40
|
+
auth = Authorize(self.user)
|
41
|
+
auth.login()
|
42
|
+
self.headers = auth.headers
|
43
|
+
self.time_mills = auth.time_mills
|
44
|
+
self.user_onboard_dto = auth.user_onboard_dto
|
45
|
+
return self
|
46
|
+
|
47
|
+
def run(self, method, api, **kwargs):
|
48
|
+
self.login()
|
49
|
+
replacer = PlaceholderReplacer({
|
50
|
+
"Sponsor ID": self.user_onboard_dto.sponsorId,
|
51
|
+
"Study ID": self.user_onboard_dto.studyId,
|
52
|
+
"Env ID": self.user_onboard_dto.envId,
|
53
|
+
"Sponsor Name": self.user.sponsor,
|
54
|
+
"Study Name": self.user.study,
|
55
|
+
"Lifecycle": self.user.app_env,
|
56
|
+
})
|
57
|
+
url = replacer.replace(api)
|
58
|
+
for key, value in kwargs.items():
|
59
|
+
kwargs[key] = replacer.replace(value)
|
60
|
+
if self.user.external is False:
|
61
|
+
url = AppUrl(self.user.app, self.user.test_env).which_url(self.user.app)(url)
|
62
|
+
else:
|
63
|
+
url = AppUrl(self.user.app, self.user.test_env).external_url(url)
|
64
|
+
request(method, url, headers=self.headers, **kwargs)
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# !/usr/bin/python3
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
@Author: xiaodong.li
|
5
|
+
@Time: 2024/11/01 17:01
|
6
|
+
@Description: Description
|
7
|
+
@File: system_env_api.py
|
8
|
+
"""
|
9
|
+
from api_requester.http.eclinical_requests import *
|
10
|
+
|
11
|
+
|
12
|
+
class CommonSystemEnvApi:
|
13
|
+
"""
|
14
|
+
The CommonSystemEnvApi was generated by Generator from the SystemEnvController.java file.
|
15
|
+
"""
|
16
|
+
|
17
|
+
@get('/system/env')
|
18
|
+
def get_current_system_env_api(self, *args, **kwargs): ...
|
19
|
+
|
20
|
+
@get('/system/env/list')
|
21
|
+
def sponsor_env_list_api(self, *args, **kwargs): ...
|
22
|
+
|
23
|
+
@put('/system/env/{envId}/role/{roleId}')
|
24
|
+
def switch_env_api(self, *args, **kwargs): ...
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# !/usr/bin/python3
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
@Author: xiaodong.li
|
5
|
+
@Time: 2024/11/01 17:01
|
6
|
+
@Description: Description
|
7
|
+
@File: system_env_service.py
|
8
|
+
"""
|
9
|
+
from api_requester.core.common.api.system_env_api import CommonSystemEnvApi
|
10
|
+
|
11
|
+
|
12
|
+
class CommonSystemEnvService(CommonSystemEnvApi):
|
13
|
+
"""
|
14
|
+
The CommonSystemEnvService was generated by Generator from the SystemEnvController.java file.
|
15
|
+
"""
|
16
|
+
|
17
|
+
def __init__(self):
|
18
|
+
CommonSystemEnvApi.__init__(self)
|
19
|
+
|
20
|
+
def get_current_system_env(self):
|
21
|
+
return self.get_current_system_env_api()
|
22
|
+
|
23
|
+
def sponsor_env_list(self):
|
24
|
+
return self.sponsor_env_list_api()
|
25
|
+
|
26
|
+
def switch_env(self, env_id: int, role_id: int):
|
27
|
+
return self.switch_env_api(url_kwargs=dict(envId=env_id, roleId=role_id))
|
@@ -0,0 +1,46 @@
|
|
1
|
+
serverUrl:
|
2
|
+
dev03: http://dev-03-app-01.chengdudev.edetekapps.cn
|
3
|
+
dev04: http://dev-04-app-01.chengdudev.edetekapps.cn
|
4
|
+
dev01: http://dev-01-app-01.chengdudev.edetekapps.cn
|
5
|
+
test01: http://test-01-app-01.chengdudev.edetekapps.cn
|
6
|
+
us.dev: https://ec.eclinical-dev.edetekapps.com
|
7
|
+
us.demo: https://ec4.ec4demo.edetekapps.com
|
8
|
+
|
9
|
+
admin:
|
10
|
+
urlPrefix: /api/admin
|
11
|
+
blacklist:
|
12
|
+
- request /administration/coding/**
|
13
|
+
- request /monitor/{tokenBase64}/api/{monitorServerBase64}/**
|
14
|
+
filters:
|
15
|
+
- RewritePath=/api/external/admin(?P<segment>/?.*),/admin/api/external\g<segment>
|
16
|
+
|
17
|
+
design:
|
18
|
+
urlPrefix: /api/design
|
19
|
+
|
20
|
+
ctms:
|
21
|
+
urlPrefix: /api/ctms
|
22
|
+
filters:
|
23
|
+
- RewritePath=/api/external/facade(?P<segment>/?.*),/api/external\g<segment>
|
24
|
+
|
25
|
+
etmf:
|
26
|
+
urlPrefix: /api/etmf
|
27
|
+
|
28
|
+
edc:
|
29
|
+
urlPrefix: /api/edc
|
30
|
+
filters:
|
31
|
+
- RewritePath=/api/external/facade(?P<segment>/?.*),/api/external/edc\g<segment>
|
32
|
+
|
33
|
+
iwrs:
|
34
|
+
urlPrefix: /api/iwrs
|
35
|
+
|
36
|
+
external:
|
37
|
+
urlPrefix: /api/external
|
38
|
+
|
39
|
+
coding:
|
40
|
+
urlPrefix: /api/coding
|
41
|
+
|
42
|
+
imaging:
|
43
|
+
urlPrefix: /api/imaging
|
44
|
+
|
45
|
+
pv:
|
46
|
+
urlPrefix: /api/pv
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# !/usr/bin/python3
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
@Author: xiaodong.li
|
5
|
+
@Time: 2024/04/24 20:45
|
6
|
+
@Description: Description
|
7
|
+
@File: cross_user_user_on_board_dto.py
|
8
|
+
"""
|
9
|
+
from dataclasses import dataclass
|
10
|
+
|
11
|
+
from api_requester.dto.base_dto import BaseDto
|
12
|
+
|
13
|
+
|
14
|
+
@dataclass
|
15
|
+
class CrossUserUserOnBoardDto(BaseDto):
|
16
|
+
"""
|
17
|
+
The CrossUserUserOnBoardDto was generated by Generator from the CrossUserUserOnBoardDto.java file.
|
18
|
+
"""
|
19
|
+
companyId: int = None
|
20
|
+
redirectUrl: str = None
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# !/usr/bin/python3
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
@Author: xiaodong.li
|
5
|
+
@Time: 2024/04/24 20:45
|
6
|
+
@Description: Description
|
7
|
+
@File: jwt_authentication_request.py
|
8
|
+
"""
|
9
|
+
from dataclasses import dataclass
|
10
|
+
|
11
|
+
from api_requester.dto.base_dto import BaseDto
|
12
|
+
|
13
|
+
|
14
|
+
@dataclass
|
15
|
+
class JwtAuthenticationRequest(BaseDto):
|
16
|
+
"""
|
17
|
+
The JwtAuthenticationRequest was generated by Generator from the JwtAuthenticationRequest.java file.
|
18
|
+
"""
|
19
|
+
userName: str
|
20
|
+
password: str
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# !/usr/bin/python3
|
2
|
+
# -*- coding:utf-8 -*-
|
3
|
+
"""
|
4
|
+
@Author: xiaodong.li
|
5
|
+
@Time: 2024/04/24 20:45
|
6
|
+
@Description: Description
|
7
|
+
@File: user_on_board_dto.py
|
8
|
+
"""
|
9
|
+
from dataclasses import dataclass
|
10
|
+
|
11
|
+
from api_requester.dto.base_dto import BaseDto
|
12
|
+
|
13
|
+
|
14
|
+
@dataclass
|
15
|
+
class UserOnBoardDto(BaseDto):
|
16
|
+
"""
|
17
|
+
The UserOnBoardDto was generated by Generator from the UserOnBoardDto.java file.
|
18
|
+
"""
|
19
|
+
applicationId: int
|
20
|
+
sponsorId: int = None
|
21
|
+
studyId: int = None
|
22
|
+
envId: int = None
|
23
|
+
workForCompanyId: int = None
|
24
|
+
userId: int = None
|
25
|
+
userType: str = None
|
26
|
+
roleId: int = None
|
27
|
+
token: str = None
|
28
|
+
permissionId: int = None
|
29
|
+
companyLevelLogin: bool = False
|