Skip to content

Commit 7deef37

Browse files
2.9.0 changes
1 parent b8d9b61 commit 7deef37

File tree

9 files changed

+173
-91
lines changed

9 files changed

+173
-91
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,7 @@ v2.5.1 (2024-04-02)
414414
- The `AdvancedActions` class was moved from the `ticloud` module into `advanced`.
415415
- The `SpectraAssureScenarios` and `SpectraAssureClient` enable the user to perform actions that combine the **ReversingLabs Spectra Assure** platform with TitaniumCloud and A1000.
416416

417+
- The user agent string now also carries the class and method name.
417418

418419
### ReversingLabs SDK Cookbook changes
419420
#### Improvements

ReversingLabs/SDK/a1000.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ def check_submitted_url_status(self, task_id):
341341

342342
url = self._url.format(endpoint=endpoint)
343343

344-
response = self.__get_request(url=url, method_name=inspect.currentframe().f_code.co_name)
344+
response = self.__get_request(url=url)
345345

346346
self.__raise_on_error(response)
347347

@@ -987,8 +987,7 @@ def delete_samples(self, hash_input):
987987

988988
response = self.__post_request(
989989
url=url,
990-
data=data,
991-
method_name=f"{self.__class__.__name__} {inspect.currentframe().f_code.co_name}"
990+
data=data
992991
)
993992

994993
else:

ReversingLabs/SDK/fie.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
A Python module for the ReversingLabs File Inspection Engine REST API.
66
"""
77

8+
import inspect
89
import requests
910
from io import BytesIO
1011

@@ -20,8 +21,8 @@ def __init__(self, host, verify=True, proxies=None, user_agent=DEFAULT_USER_AGEN
2021
self._host = self.__validate_host(host)
2122
self._url = "{host}{{endpoint}}".format(host=self._host)
2223
self._verify = verify
23-
24-
self._headers = {"User-Agent": user_agent}
24+
self._user_agent = user_agent
25+
self._headers = {}
2526

2627
if proxies:
2728
if not isinstance(proxies, dict):
@@ -151,6 +152,9 @@ def __upload_file(self, file_source, endpoint):
151152

152153
url = self._url.format(endpoint=endpoint)
153154

155+
self._headers["User-Agent"] = (f"{self._user_agent}; {self.__class__.__name__} "
156+
f"{inspect.currentframe().f_back.f_code.co_name}")
157+
154158
response = requests.post(
155159
url=url,
156160
data=file_source,

ReversingLabs/SDK/ticloud.py

+15-3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import base64
99
import datetime
1010
import hashlib
11+
import inspect
1112
import json
1213
import os
1314
import requests
@@ -60,9 +61,8 @@ def __init__(self, host, username, password, verify=True, proxies=None,
6061
raise WrongInputError("proxies parameter can not be an empty dictionary.")
6162
self._proxies = proxies
6263

63-
self._headers = {
64-
"User-Agent": user_agent
65-
}
64+
self._user_agent = user_agent
65+
self._headers = {}
6666
self._allow_none_return = allow_none_return
6767

6868
@staticmethod
@@ -96,6 +96,9 @@ def _get_request(self, url, params=None):
9696
:return: response
9797
:rtype: requests.Response
9898
"""
99+
self._headers["User-Agent"] = (f"{self._user_agent}; {self.__class__.__name__} "
100+
f"{inspect.currentframe().f_back.f_code.co_name}")
101+
99102
response = requests.get(
100103
url=url,
101104
auth=self._credentials,
@@ -119,6 +122,9 @@ def _post_request(self, url, post_json=None, data=None, params=None):
119122
:return: response
120123
:rtype: requests.Response
121124
"""
125+
self._headers["User-Agent"] = (f"{self._user_agent}; {self.__class__.__name__} "
126+
f"{inspect.currentframe().f_back.f_code.co_name}")
127+
122128
response = requests.post(
123129
url=url,
124130
auth=self._credentials,
@@ -141,6 +147,9 @@ def _delete_request(self, url, payload_json=None):
141147
:return: response
142148
:rtype: requests.Response
143149
"""
150+
self._headers["User-Agent"] = (f"{self._user_agent}; {self.__class__.__name__} "
151+
f"{inspect.currentframe().f_back.f_code.co_name}")
152+
144153
response = requests.delete(
145154
url=url,
146155
auth=self._credentials,
@@ -159,6 +168,9 @@ def _put_request(self, url):
159168
:return: response
160169
:rtype: requests.Response
161170
"""
171+
self._headers["User-Agent"] = (f"{self._user_agent}; {self.__class__.__name__} "
172+
f"{inspect.currentframe().f_back.f_code.co_name}")
173+
162174
response = requests.put(
163175
url=url,
164176
auth=self._credentials,

ReversingLabs/SDK/tiscale.py

+24-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
A Python module for the ReversingLabs TitaniumScale appliance REST API.
66
"""
77

8+
import inspect
89
import json
910
import requests
1011
import time
@@ -26,7 +27,8 @@ def __init__(self, host, token=None, wait_time_seconds=2, retries=10, verify=Tru
2627
self._host = self.__validate_host(host)
2728
self._url = "{host}{{endpoint}}".format(host=self._host)
2829

29-
self._headers = {"User-Agent": user_agent}
30+
self._user_agent = user_agent
31+
self._headers = {}
3032
if token:
3133
self._headers["Authorization"] = "Token {token}".format(token=token)
3234

@@ -238,6 +240,9 @@ def __get_results(self, task_url, full_report=False):
238240
full_report=full_report
239241
)
240242

243+
self._headers["User-Agent"] = (f"{self._user_agent}; {self.__class__.__name__} "
244+
f"{inspect.currentframe().f_back.f_code.co_name}")
245+
241246
response = requests.get(
242247
url=url,
243248
verify=self._verify,
@@ -290,6 +295,9 @@ def __upload_files(self, file_handle, custom_token, user_data, custom_data):
290295

291296
url = self._url.format(endpoint=self.__UPLOAD_ENDPOINT)
292297

298+
self._headers["User-Agent"] = (f"{self._user_agent}; {self.__class__.__name__} "
299+
f"{inspect.currentframe().f_back.f_code.co_name}")
300+
293301
response = requests.post(
294302
url=url,
295303
files=files,
@@ -326,6 +334,9 @@ def list_processing_tasks(self, age=None, custom_token=None):
326334

327335
url = self._url.format(endpoint=self.__MULTIPLE_TASKS_ENDPOINT)
328336

337+
self._headers["User-Agent"] = (f"{self._user_agent}; {self.__class__.__name__} "
338+
f"{inspect.currentframe().f_code.co_name}")
339+
329340
response = requests.get(
330341
url=url,
331342
verify=self._verify,
@@ -374,6 +385,9 @@ def get_processing_task_info(self, task_id, full=True, v13=False, view=None):
374385
endpoint = self.__SINGLE_TASK_ENDPOINT.format(task_id=task_id)
375386
url = self._url.format(endpoint=endpoint)
376387

388+
self._headers["User-Agent"] = (f"{self._user_agent}; {self.__class__.__name__} "
389+
f"{inspect.currentframe().f_code.co_name}")
390+
377391
response = requests.get(
378392
url=url,
379393
verify=self._verify,
@@ -399,6 +413,9 @@ def delete_processing_task(self, task_id):
399413
endpoint = self.__SINGLE_TASK_ENDPOINT.format(task_id=task_id)
400414
url = self._url.format(endpoint=endpoint)
401415

416+
self._headers["User-Agent"] = (f"{self._user_agent}; {self.__class__.__name__} "
417+
f"{inspect.currentframe().f_code.co_name}")
418+
402419
response = requests.delete(
403420
url=url,
404421
verify=self._verify,
@@ -424,6 +441,9 @@ def delete_multiple_tasks(self, age):
424441

425442
url = self._url.format(endpoint=self.__MULTIPLE_TASKS_ENDPOINT)
426443

444+
self._headers["User-Agent"] = (f"{self._user_agent}; {self.__class__.__name__} "
445+
f"{inspect.currentframe().f_code.co_name}")
446+
427447
response = requests.delete(
428448
url=url,
429449
verify=self._verify,
@@ -440,6 +460,9 @@ def get_yara_id(self):
440460
"""Retrieves the identifier of the current set of YARA rules on the TitaniumScale Worker instance."""
441461
url = self._url.format(endpoint=self.__YARA_ID_ENDPOINT)
442462

463+
self._headers["User-Agent"] = (f"{self._user_agent}; {self.__class__.__name__} "
464+
f"{inspect.currentframe().f_code.co_name}")
465+
443466
response = requests.get(
444467
url=url,
445468
verify=self._verify,

0 commit comments

Comments
 (0)