Skip to content

Commit 76c5e1a

Browse files
johanah29guillaumejparis
authored andcommitted
[client] Show expectation traces
1 parent 480d4d3 commit 76c5e1a

File tree

4 files changed

+39
-10
lines changed

4 files changed

+39
-10
lines changed

pyobas/apis/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from .endpoint import * # noqa: F401,F403
55
from .inject import * # noqa: F401,F403
66
from .inject_expectation import * # noqa: F401,F403
7+
from .inject_expectation_trace import * # noqa: F401,F403
78
from .injector import * # noqa: F401,F403
89
from .kill_chain_phase import * # noqa: F401,F403
910
from .me import * # noqa: F401,F403

pyobas/apis/inject_expectation/inject_expectation.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,18 @@ class InjectExpectationManager(ListMixin, UpdateMixin, RESTManager):
2020
_obj_cls = InjectExpectation
2121
_update_attrs = RequiredOptional(required=("collector_id", "result", "is_success"))
2222

23-
@exc.on_http_error(exc.OpenBASUpdateError)
24-
def expectations_for_source(self, source_id: str, **kwargs: Any) -> Dict[str, Any]:
25-
path = f"{self.path}/" + source_id
26-
result = self.openbas.http_get(path, **kwargs)
27-
return result
28-
2923
@exc.on_http_error(exc.OpenBASUpdateError)
3024
def expectations_assets_for_source(
31-
self, source_id: str, **kwargs: Any
25+
self, source_id: str, expiration_time: int = None, **kwargs: Any
3226
) -> Dict[str, Any]:
3327
path = f"{self.path}/assets/" + source_id
34-
result = self.openbas.http_get(path, **kwargs)
28+
result = self.openbas.http_get(
29+
path,
30+
query_data=(
31+
{"expiration_time": expiration_time} if expiration_time else None
32+
),
33+
**kwargs,
34+
)
3535
return result
3636

3737
def expectations_models_for_source(self, source_id: str, **kwargs: Any):
@@ -83,10 +83,16 @@ def prevention_expectations_for_source(
8383

8484
@exc.on_http_error(exc.OpenBASUpdateError)
8585
def detection_expectations_for_source(
86-
self, source_id: str, **kwargs: Any
86+
self, source_id: str, expiration_time: int = None, **kwargs: Any
8787
) -> Dict[str, Any]:
8888
path = f"{self.path}/detection/" + source_id
89-
result = self.openbas.http_get(path, **kwargs)
89+
result = self.openbas.http_get(
90+
path,
91+
query_data=(
92+
{"expiration_time": expiration_time} if expiration_time else None
93+
),
94+
**kwargs,
95+
)
9096
return result
9197

9298
@exc.on_http_error(exc.OpenBASUpdateError)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from pyobas.base import RESTManager, RESTObject
2+
from pyobas.mixins import CreateMixin
3+
from pyobas.utils import RequiredOptional
4+
5+
6+
class InjectExpectationTrace(RESTObject):
7+
_id_attr = "inject_expectation_trace_id"
8+
9+
10+
class InjectExpectationTraceManager(CreateMixin, RESTManager):
11+
_path = "/inject-expectations-traces"
12+
_obj_cls = InjectExpectationTrace
13+
_create_attrs = RequiredOptional(
14+
required=(
15+
"inject_expectation_trace_expectation",
16+
"inject_expectation_trace_source_id",
17+
"inject_expectation_trace_alert_name",
18+
"inject_expectation_trace_alert_link",
19+
"inject_expectation_trace_date",
20+
),
21+
)

pyobas/client.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ def __init__(
6969
self.inject_expectation = apis.InjectExpectationManager(self)
7070
self.payload = apis.PayloadManager(self)
7171
self.security_platform = apis.SecurityPlatformManager(self)
72+
self.inject_expectation_trace = apis.InjectExpectationTraceManager(self)
7273

7374
@staticmethod
7475
def _check_redirects(result: requests.Response) -> None:

0 commit comments

Comments
 (0)