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 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, headers=_headers, verify=self._SSL_verify, **_kwargs)
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) -> list:
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
- result = []
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.20.2'
1
+ version = '3.21.0'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xautomata-hive
3
- Version: 3.20.2
3
+ Version: 3.21.0
4
4
  Home-page: https://github.com/sherlogic/xautomata-hive.git
5
5
  Author: Enrico Ferro - Andrea Jacassi
6
6
  Author-email:
@@ -1,10 +1,10 @@
1
1
  hive/__init__.py,sha256=UjH5QfSfRGu2FR5_StfVbEtL_fuGS2Z_iZXmf1nx4AE,68
2
- hive/api.py,sha256=hQrokucvtOoBErofaCz27BFVBCh4BejPTj6sYwYb5Ik,41633
3
- hive/decorators.py,sha256=Lb2mYj7UpFaCzJXGKyLj3SmTK74zKMZgnC7Ys2j1D7g,9975
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=A6DNRNCQIzEvjIBXMgWYcvOSWQ0pSbph1yJNgYqBuQI,18
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=xQp7gW4FQP6717d4MCOuQN2Py7nw7TFy4pl9RmkqMKs,6705
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.20.2.dist-info/LICENSE,sha256=CFT1oIPm4kciOjwep2r1LQnpATugddSy3D839fsmgFs,1065
74
- xautomata_hive-3.20.2.dist-info/METADATA,sha256=6xtRLnOJwglxObwqxoWqj1bq_NJfuSgVKwcsk9MMd9M,10747
75
- xautomata_hive-3.20.2.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
76
- xautomata_hive-3.20.2.dist-info/top_level.txt,sha256=pLpVAuviHGk3pzaFXU-4GKttxGTGAbFoWK8JvUl1jHQ,5
77
- xautomata_hive-3.20.2.dist-info/RECORD,,
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.3.0)
2
+ Generator: setuptools (75.6.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5