xautomata-hive 3.20.2__py3-none-any.whl → 3.21.0__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.
- hive/api.py +7 -1
- hive/cookbook/webhooks.py +5 -2
- hive/decorators.py +32 -6
- hive/version.py +1 -1
- {xautomata_hive-3.20.2.dist-info → xautomata_hive-3.21.0.dist-info}/METADATA +1 -1
- {xautomata_hive-3.20.2.dist-info → xautomata_hive-3.21.0.dist-info}/RECORD +9 -9
- {xautomata_hive-3.20.2.dist-info → xautomata_hive-3.21.0.dist-info}/WHEEL +1 -1
- {xautomata_hive-3.20.2.dist-info → xautomata_hive-3.21.0.dist-info}/LICENSE +0 -0
- {xautomata_hive-3.20.2.dist-info → xautomata_hive-3.21.0.dist-info}/top_level.txt +0 -0
hive/api.py
CHANGED
@@ -52,6 +52,7 @@ class ApiManager:
|
|
52
52
|
_timeout_sleep_time = 120 # tempo di attesa tra un retry e quello successivo in caso di timeout
|
53
53
|
_silence_warning = False # da implementare
|
54
54
|
num_items = None # serve per quando si mette la count a True, di default vale 0
|
55
|
+
response = [] # variabile in cui mettere la risposta degli endpoing per poter accedere alla versione originale
|
55
56
|
|
56
57
|
def __init__(self, root, user, password, ssl_verify: bool = True):
|
57
58
|
|
@@ -155,6 +156,8 @@ class ApiManager:
|
|
155
156
|
|
156
157
|
url = f'{self.root}{path}'
|
157
158
|
|
159
|
+
self.response = [] # reset dell'attributo responce, cosi da non accodare risposte proveninenti da richieste diverse
|
160
|
+
|
158
161
|
@warmstart(active=warm_start, args_ex=[2], verbose=False)
|
159
162
|
@paginate(single_page=single_page, page_size=page_size, skip=_params_['skip'], limit=_params_['limit'], bulk=bulk)
|
160
163
|
@timeout_retry(max_tries=self._timeout_retry, sleep_time=self._timeout_sleep_time)
|
@@ -166,7 +169,8 @@ class ApiManager:
|
|
166
169
|
logger.debug(f'request params (skip and limit may differ from your setting due pagination): {_params}')
|
167
170
|
logger.debug(f'request payload: {_payload}')
|
168
171
|
|
169
|
-
response = get_session(self._timeout, self._timeout_get_session_retry, self._timeout_get_session_backoff_factor).request(_mode, url=_url, json=_payload, params=_params,
|
172
|
+
response = get_session(self._timeout, self._timeout_get_session_retry, self._timeout_get_session_backoff_factor).request(_mode, url=_url, json=_payload, params=_params,
|
173
|
+
headers=_headers, verify=self._SSL_verify, **_kwargs)
|
170
174
|
if response.status_code == 401: raise UnauthorizedException
|
171
175
|
if response.status_code != 200 and response.status_code != 504: # 504 non e' gestito dalle API per cui la responce non sarebbe json serializable
|
172
176
|
logger.error(response.json())
|
@@ -178,6 +182,8 @@ class ApiManager:
|
|
178
182
|
logger.debug(f'responce: {response.json()}')
|
179
183
|
logger.debug(f'header: {response.headers}')
|
180
184
|
|
185
|
+
self.response.append(response) # sotto forma di lista perche se la risposta viene paginata questa viene spezzata su piu risposte
|
186
|
+
|
181
187
|
return response.json()
|
182
188
|
|
183
189
|
return run_request(mode, url, _headers_, _payload_, _params_, **kwargs)
|
hive/cookbook/webhooks.py
CHANGED
@@ -115,16 +115,19 @@ class Webhooks(ApiManager):
|
|
115
115
|
return response
|
116
116
|
|
117
117
|
def webhooks_create_webhook_type(self, webhook_type: str,
|
118
|
-
kwargs: dict = None
|
118
|
+
single_page: bool = False, page_size: int = 50, kwargs: dict = None
|
119
|
+
) -> list:
|
119
120
|
"""Post Webhook
|
120
121
|
|
121
122
|
Args:
|
122
123
|
webhook_type (str, required): webhook_type
|
124
|
+
single_page (bool, optional): se False la risposta viene ottenuta a step per non appesantire le API. Default to False.
|
125
|
+
page_size (int, optional): Numero di oggetti per pagina se single_page == False. Default to 50.
|
123
126
|
kwargs (dict, optional): additional parameters for execute. Default to None.
|
124
127
|
|
125
128
|
Returns: list"""
|
126
129
|
if kwargs is None:
|
127
130
|
kwargs = dict()
|
128
131
|
response = self.execute('POST', path=f'/webhooks/{webhook_type}',
|
129
|
-
**kwargs)
|
132
|
+
single_page=single_page, page_size=page_size, **kwargs)
|
130
133
|
return response
|
hive/decorators.py
CHANGED
@@ -131,29 +131,55 @@ def timeout_retry(func=None, max_tries: int = 2, sleep_time: int = 60):
|
|
131
131
|
|
132
132
|
|
133
133
|
def paginate(single_page: bool, page_size: int, skip: int, limit: int, bulk: bool):
|
134
|
+
"""Questa funzione è un decorator che abilita la paginazione per una funzione.
|
135
|
+
|
136
|
+
Args:
|
137
|
+
single_page: se True, restituisce solo una singola "pagina" di risultati.
|
138
|
+
page_size: dimensione della pagina (numero massimo di elementi per chiamata).
|
139
|
+
skip: numero di elementi da saltare all'inizio.
|
140
|
+
limit: numero massimo di elementi da restituire.
|
141
|
+
bulk: se True, gestisce il payload in modalità "bulk", suddividendolo in chunk.
|
142
|
+
"""
|
134
143
|
def attributes(func):
|
144
|
+
# Questo è il decorator interno che avvolge la funzione passata (`func`).
|
135
145
|
@functools.wraps(func)
|
136
146
|
def behaviour(mode, url, headers, payload, params, **kwargs) -> list:
|
137
|
-
|
147
|
+
# `behaviour` è la funzione wrapper che implementa la logica di paginazione.
|
148
|
+
# Accetta i parametri della funzione originale (`func`) e aggiunge il supporto alla paginazione.
|
149
|
+
result = [] # Lista che conterrà i risultati aggregati.
|
138
150
|
|
139
151
|
# se la chiamata è bulk, il payload deve essere un lista e qui viene divisa in chunk e viene chiamata un
|
140
152
|
# chunk per volta, ogni chunk ha la dimensione del page_size
|
141
153
|
if bulk and not single_page: # se la bulk viene richiesta in single_page, ricade nell'uso normale
|
154
|
+
# Divide il payload in chunk della dimensione specificata da `page_size`.
|
142
155
|
c_payload = chunks(payload, page_size)
|
156
|
+
# Per ogni chunk:
|
143
157
|
for c in c_payload:
|
158
|
+
# Chiama la funzione originale (`func`) con il chunk corrente.
|
144
159
|
result_partial = func(mode, url, headers, c, params, **kwargs)
|
160
|
+
# Se il risultato non è una lista, lo converte in una lista.
|
145
161
|
if not isinstance(result_partial, list): result_partial = [result_partial]
|
162
|
+
# Aggiunge i risultati parziali alla lista complessiva `result`.
|
146
163
|
result += result_partial
|
147
164
|
|
148
|
-
else:
|
149
|
-
size = page_size if not single_page else limit
|
150
|
-
params['skip'] = skip
|
151
|
-
params['limit'] = min(size, limit)
|
152
|
-
while True:
|
165
|
+
else: # Se non è in modalità bulk o se è richiesto single_page:
|
166
|
+
size = page_size if not single_page else limit # Determina la dimensione della pagina.
|
167
|
+
params['skip'] = skip # Imposta il valore iniziale di `skip` nei parametri.
|
168
|
+
params['limit'] = min(size, limit) # Imposta il limite massimo per la pagina corrente.
|
169
|
+
while True: # Ciclo per iterare attraverso le pagine.
|
170
|
+
# Chiama la funzione originale (`func`) con i parametri della pagina corrente.
|
153
171
|
result_partial = func(mode, url, headers, payload, params, **kwargs)
|
172
|
+
# Se il risultato non è una lista, lo converte in una lista.
|
154
173
|
if not isinstance(result_partial, list): result_partial = [result_partial]
|
174
|
+
# Aggiunge i risultati parziali alla lista complessiva `result`.
|
155
175
|
result += result_partial
|
176
|
+
# Aggiorna il valore di `skip` per passare alla pagina successiva.
|
156
177
|
params['skip'] = params['skip'] + size
|
178
|
+
# Interrompe il ciclo se:
|
179
|
+
# - Non ci sono più risultati (`result_partial` è vuoto).
|
180
|
+
# - Il numero di risultati è inferiore alla dimensione della pagina.
|
181
|
+
# - Il numero totale di risultati supera il limite specificato.
|
182
|
+
# - È richiesto il single_page.
|
157
183
|
if not result_partial or len(result_partial) < size or len(result) > limit or single_page: break
|
158
184
|
|
159
185
|
# se count è True il result è una lista con dentro una tupla, in questa maniera viene trasmessa solo la tupla
|
hive/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
version = '3.
|
1
|
+
version = '3.21.0'
|
@@ -1,10 +1,10 @@
|
|
1
1
|
hive/__init__.py,sha256=UjH5QfSfRGu2FR5_StfVbEtL_fuGS2Z_iZXmf1nx4AE,68
|
2
|
-
hive/api.py,sha256=
|
3
|
-
hive/decorators.py,sha256=
|
2
|
+
hive/api.py,sha256=tXYFzcAEyWGmdQ3PWLD8u1m_4tCe4IL-YVAn6SUbahc,42151
|
3
|
+
hive/decorators.py,sha256=qvXBMfkzmJ3nHzpnX96thrTdZjWuw4WAqYaxsJCfRug,12110
|
4
4
|
hive/exceptions.py,sha256=kTJSPMViU2ZhF_ENbL_i-skU3YEv_ViJH2PpUQ6ums8,136
|
5
5
|
hive/infrastrucure_keys.py,sha256=UzgXex6tQsglowhKeb45e7vw4u7kh2wM0YscQPorodU,4095
|
6
6
|
hive/tools.py,sha256=Oi_d6wphtAS4f1wOhFzdXZj8Au1nwZ-UrRvIJDBQLMo,1371
|
7
|
-
hive/version.py,sha256=
|
7
|
+
hive/version.py,sha256=CzEEPnYnPo514ZDmU-I_H_Uu3B3rOyK4rzwGXkNMQy0,18
|
8
8
|
hive/cookbook/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
9
|
hive/cookbook/acl_docs.py,sha256=0xr7Vb9121vhsiZjQaKvuAt4gKlXOO4aUJM472HeARw,786
|
10
10
|
hive/cookbook/acl_overrides.py,sha256=l3xyJmGeQysP1M2Sa6kVhDn8n6ttCKUzJ0jTcPjyo78,9690
|
@@ -67,11 +67,11 @@ hive/cookbook/ts_service_value.py,sha256=CAxT58Ss4cdECAv8Uuxs3UdV-CCtdVGaur3AddN
|
|
67
67
|
hive/cookbook/users.py,sha256=FGeHTuvcXkZN2oC-Zuj4qSsxDysLSPbg9EP0A2YbhmE,52551
|
68
68
|
hive/cookbook/users_notifications.py,sha256=klrqR3awrwKHx6o0wpg2oLFdU0PWA2MSa41KtJQhNjw,8165
|
69
69
|
hive/cookbook/virtual_domains.py,sha256=N3dp3pjkO-5jni3KBcCukRqcmVqAFYCDV6dgVXrHaFM,22826
|
70
|
-
hive/cookbook/webhooks.py,sha256=
|
70
|
+
hive/cookbook/webhooks.py,sha256=PYbA1nZqJ9p8qbKk8Ba5_WLXKgJMkXmRI1YFK70RPxQ,7047
|
71
71
|
hive/cookbook/widget_groups.py,sha256=GY7mBh72HzI9RRMCwnmJ-fildtZ3w4BrPDUdNfNoVyk,16018
|
72
72
|
hive/cookbook/widgets.py,sha256=nYAEwh17aMGam8EC13jUwSR_i9KuP4yYRt25F0J6Z4g,23497
|
73
|
-
xautomata_hive-3.
|
74
|
-
xautomata_hive-3.
|
75
|
-
xautomata_hive-3.
|
76
|
-
xautomata_hive-3.
|
77
|
-
xautomata_hive-3.
|
73
|
+
xautomata_hive-3.21.0.dist-info/LICENSE,sha256=CFT1oIPm4kciOjwep2r1LQnpATugddSy3D839fsmgFs,1065
|
74
|
+
xautomata_hive-3.21.0.dist-info/METADATA,sha256=5uc08Aguie_ZpaP5McMGIowt9KndfzIO4XjrtH2SWzM,10747
|
75
|
+
xautomata_hive-3.21.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
76
|
+
xautomata_hive-3.21.0.dist-info/top_level.txt,sha256=pLpVAuviHGk3pzaFXU-4GKttxGTGAbFoWK8JvUl1jHQ,5
|
77
|
+
xautomata_hive-3.21.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|