codosdk 1.0.6__tar.gz → 1.0.8__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.
Files changed (50) hide show
  1. {codosdk-1.0.6 → codosdk-1.0.8}/PKG-INFO +1 -1
  2. {codosdk-1.0.6 → codosdk-1.0.8}/codosdk.egg-info/PKG-INFO +1 -1
  3. {codosdk-1.0.6 → codosdk-1.0.8}/setup.py +2 -2
  4. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/apis/mgv4_apis.py +19 -0
  5. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/base_handler.py +3 -0
  6. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/client.py +50 -18
  7. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/model_utils.py +2 -4
  8. {codosdk-1.0.6 → codosdk-1.0.8}/LICENSE +0 -0
  9. {codosdk-1.0.6 → codosdk-1.0.8}/README.md +0 -0
  10. {codosdk-1.0.6 → codosdk-1.0.8}/codosdk.egg-info/SOURCES.txt +0 -0
  11. {codosdk-1.0.6 → codosdk-1.0.8}/codosdk.egg-info/dependency_links.txt +0 -0
  12. {codosdk-1.0.6 → codosdk-1.0.8}/codosdk.egg-info/requires.txt +0 -0
  13. {codosdk-1.0.6 → codosdk-1.0.8}/codosdk.egg-info/top_level.txt +0 -0
  14. {codosdk-1.0.6 → codosdk-1.0.8}/opssdk/__init__.py +0 -0
  15. {codosdk-1.0.6 → codosdk-1.0.8}/opssdk/utils/__init__.py +0 -0
  16. {codosdk-1.0.6 → codosdk-1.0.8}/pyproject.toml +0 -0
  17. {codosdk-1.0.6 → codosdk-1.0.8}/setup.cfg +0 -0
  18. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/__init__.py +0 -0
  19. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/api_set.py +0 -0
  20. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/apis/__init__.py +0 -0
  21. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/apis/admin_apis.py +0 -0
  22. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/apis/agent_apis.py +0 -0
  23. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/apis/cmdb_apis.py +0 -0
  24. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/apis/kerrigan_apis.py +0 -0
  25. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/apis/task_apis.py +0 -0
  26. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/application.py +0 -0
  27. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/cache.py +0 -0
  28. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/cache_context.py +0 -0
  29. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/cloud/__init__.py +0 -0
  30. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/cloud/qcloud_api.py +0 -0
  31. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/cloud/ucloud_api.py +0 -0
  32. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/cloud_utils.py +0 -0
  33. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/configs.py +0 -0
  34. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/consts.py +0 -0
  35. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/db_context.py +0 -0
  36. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/error.py +0 -0
  37. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/fetch_coroutine.py +0 -0
  38. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/jwt_token.py +0 -0
  39. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/ldap.py +0 -0
  40. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/logger.py +0 -0
  41. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/mqhelper.py +0 -0
  42. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/program.py +0 -0
  43. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/salt_api.py +0 -0
  44. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/sqlalchemy_pagination.py +0 -0
  45. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/tools.py +0 -0
  46. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/utils/__init__.py +0 -0
  47. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/utils/cc_crypto.py +0 -0
  48. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/utils/date_format.py +0 -0
  49. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/utils/pydantic_utils.py +0 -0
  50. {codosdk-1.0.6 → codosdk-1.0.8}/websdk2/web_logs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: codosdk
3
- Version: 1.0.6
3
+ Version: 1.0.8
4
4
  Summary: CODO项目的Python SDK
5
5
  Home-page: https://github.com/ss1917/codo_sdk/
6
6
  Author: shenshuo
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: codosdk
3
- Version: 1.0.6
3
+ Version: 1.0.8
4
4
  Summary: CODO项目的Python SDK
5
5
  Home-page: https://github.com/ss1917/codo_sdk/
6
6
  Author: shenshuo
@@ -2,14 +2,14 @@
2
2
  # -*-coding:utf-8-*-
3
3
  """"
4
4
  author : shenshuo
5
- date : 202338
5
+ date : 20241212
6
6
  desc : CODO SDK
7
7
  """
8
8
 
9
9
  import sys
10
10
  from distutils.core import setup
11
11
 
12
- VERSION = '1.0.6'
12
+ VERSION = '1.0.8'
13
13
 
14
14
  if sys.version_info < (2, 7) or (3, 0) <= sys.version_info < (3, 6):
15
15
  print('This program requires at least Python 2.7 or 3.6 to run.')
@@ -93,3 +93,22 @@ class AdminV4APIS:
93
93
  field_help={
94
94
  },
95
95
  description='获取所有角色和角色内内用户信息')
96
+
97
+ get_favorites_v4 = dict(method='GET',
98
+ url=f'{route_prefix}/v4/favorites/',
99
+ params={
100
+ },
101
+ field_help={
102
+ },
103
+ description='PAAS-基础功能-公用收藏接口-查看')
104
+
105
+ opt_favorites_v4 = dict(method='POST',
106
+ url=f'{route_prefix}/v4/favorites/',
107
+ body={
108
+ "key": "",
109
+ "app_code": "overall",
110
+ "value": {}
111
+ },
112
+ field_help={
113
+ },
114
+ description='PAAS-基础功能-公用收藏接口-添加修改')
@@ -56,6 +56,9 @@ class BaseHandler(RequestHandler):
56
56
  if self.request.method in ("POST", "PUT", "PATCH", "DELETE"):
57
57
  try:
58
58
  self.req_data = json.loads(self.request.body.decode("utf-8"))
59
+ for key in ['_index', '_rowKey', 'update_time']:
60
+ self.req_data.pop(key, None)
61
+ return self.req_data
59
62
  except json.JSONDecodeError as err:
60
63
  logging.error(f"Error parsing JSON data in request {self.request.method} at {self.request.path}: {err}")
61
64
  except Exception as err:
@@ -10,6 +10,7 @@ Desc : 处理API请求
10
10
  import json
11
11
  import requests
12
12
  from urllib.parse import urlencode
13
+ from typing import Union, Optional
13
14
  import logging
14
15
  from .consts import const
15
16
  from .configs import configs
@@ -98,32 +99,63 @@ class AcsClient:
98
99
  # timeout=self.request_timeout) as response:
99
100
  # return await response.read()
100
101
 
101
- def with_params_data_url(self, **kwargs):
102
- # 重新组装URL
103
- url = "{}{}".format(self.endpoint, kwargs['url'])
104
- kwargs['url'] = url
102
+ # def with_params_data_url(self, **kwargs):
103
+ # # 重新组装URL
104
+ # url = "{}{}".format(self.endpoint, kwargs['url'])
105
+ # kwargs['url'] = url
106
+ #
107
+ # if not kwargs['method']: kwargs['method'] = 'GET'
108
+ #
109
+ # # logging.debug(f"with_params_data_url {kwargs}")
110
+ # body = kwargs.get('body', {})
111
+ # req_json = kwargs.get('json')
112
+ #
113
+ # if kwargs['method'] in ['POST', 'post', 'PATCH', 'patch', 'PUT', 'put']:
114
+ # if not (body or req_json):
115
+ # raise TypeError('method {}, body can not be empty'.format(kwargs['method']))
116
+ # else:
117
+ # if not isinstance(body, dict):
118
+ # json.loads(body)
119
+ #
120
+ # if body and isinstance(body, dict): kwargs['body'] = json.dumps(body)
121
+ #
122
+ # params = kwargs.get('params')
123
+ # if params: kwargs['url'] = "{}?{}".format(url, urlencode(params))
124
+ #
125
+ # if not self.headers: self.headers = kwargs.get('headers', {})
126
+ #
127
+ # if kwargs['method'] not in ['GET', 'get']: self.headers['Content-Type'] = 'application/json'
128
+ #
129
+ # return kwargs
105
130
 
106
- if not kwargs['method']: kwargs['method'] = 'GET'
131
+ def with_params_data_url(self, **kwargs) -> dict:
132
+ endpoint = self.endpoint.strip("'").strip('"')
133
+ kwargs['url'] = f"{endpoint}{kwargs.get('url', '')}"
134
+ kwargs['method'] = kwargs.get('method', 'GET').upper()
107
135
 
108
- # logging.debug(f"with_params_data_url {kwargs}")
109
- body = kwargs.get('body', {})
110
- req_json = kwargs.get('json')
136
+ body: Union[dict, str] = kwargs.get('body', {})
137
+ req_json: Optional[dict] = kwargs.get('json')
111
138
 
112
- if kwargs['method'] in ['POST', 'post', 'PATCH', 'patch', 'PUT', 'put']:
139
+ if kwargs['method'] in {'POST', 'PATCH', 'PUT'}:
113
140
  if not (body or req_json):
114
- raise TypeError('method {}, body can not be empty'.format(kwargs['method']))
115
- else:
116
- if not isinstance(body, dict):
117
- json.loads(body)
141
+ raise TypeError(f"Method {kwargs['method']} requires a non-empty body or JSON payload.")
142
+ if body and not isinstance(body, dict):
143
+ try:
144
+ body = json.loads(body)
145
+ except json.JSONDecodeError as e:
146
+ raise TypeError(f"Invalid JSON body: {e}")
118
147
 
119
- if body and isinstance(body, dict): kwargs['body'] = json.dumps(body)
148
+ if body and isinstance(body, dict):
149
+ kwargs['body'] = json.dumps(body)
120
150
 
121
- params = kwargs.get('params')
122
- if params: kwargs['url'] = "{}?{}".format(url, urlencode(params))
151
+ params: Optional[dict] = kwargs.get('params')
152
+ if params:
153
+ kwargs['url'] = f"{kwargs['url']}?{urlencode(params)}"
123
154
 
124
- if not self.headers: self.headers = kwargs.get('headers', {})
155
+ kwargs['headers'] = kwargs.get('headers', self.headers or {})
125
156
 
126
- if kwargs['method'] not in ['GET', 'get']: self.headers['Content-Type'] = 'application/json'
157
+ if kwargs['method'] != 'GET':
158
+ kwargs['headers'].setdefault('Content-Type', 'application/json')
127
159
 
128
160
  return kwargs
129
161
 
@@ -99,10 +99,8 @@ class CommonOptView:
99
99
 
100
100
  @staticmethod
101
101
  def del_data(data) -> dict:
102
- if '_index' in data:
103
- del data['_index']
104
- if '_rowKey' in data:
105
- del data['_rowKey']
102
+ for key in ['_index', '_rowKey', 'update_time']:
103
+ data.pop(key, None)
106
104
  return data
107
105
 
108
106
  def handle_add(self, data: dict) -> dict:
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