1212from connectors_sdk .models import (
1313 AdministrativeArea ,
1414 AutonomousSystem ,
15- BaseIdentifiedEntity ,
1615 BaseObject ,
1716 City ,
1817 Country ,
2221 Note ,
2322 Organization ,
2423 OrganizationAuthor ,
24+ Reference ,
2525 Region ,
2626 Relationship ,
2727 Software ,
2828 TLPMarking ,
2929 X509Certificate ,
3030)
3131from connectors_sdk .models .enums import HashAlgorithm , RelationshipType , TLPLevel
32- from pydantic import Field
33-
34-
35- class EmbeddedIdentifiedStixObject (BaseIdentifiedEntity ):
36- """Embedded Identified STIX Object representation.
37-
38- This class encapsulates a STIX object with an id as a dictionary and provides
39- access to the object without copying or modifying the original data.
40-
41- Use when you only need to read or forward the STIX object, not alter it.
42- """
43-
44- stix_object : dict [str , Any ] = Field ()
45-
46- @property
47- def id (self ) -> str :
48- """Return the STIX object's ID."""
49- return self .stix_object ["id" ]
50-
51- def to_stix2_object (self ) -> dict [str , Any ]:
52- """Return the STIX2 object representation."""
53- return self .stix_object
5432
5533
5634class Converter :
@@ -60,7 +38,7 @@ def __init__(self) -> None:
6038 self ._common_props = {"author" : self .author , "markings" : [self .marking ]}
6139
6240 def _generate_city (
63- self , observable : EmbeddedIdentifiedStixObject , name : str | None
41+ self , observable : Reference , name : str | None
6442 ) -> Generator [BaseObject , None , None ]:
6543 if not name :
6644 return
@@ -80,7 +58,7 @@ def _generate_city(
8058 ]
8159
8260 def _generate_country (
83- self , observable : EmbeddedIdentifiedStixObject , name : str | None
61+ self , observable : Reference , name : str | None
8462 ) -> Generator [BaseObject , None , Country | None ]:
8563 if not name :
8664 return None
@@ -101,7 +79,7 @@ def _generate_country(
10179 return country
10280
10381 def _generate_region (
104- self , observable : EmbeddedIdentifiedStixObject , name : str | None
82+ self , observable : Reference , name : str | None
10583 ) -> Generator [BaseObject , None , None ]:
10684 if not name :
10785 return
@@ -122,7 +100,7 @@ def _generate_region(
122100
123101 def _generate_administrative_area (
124102 self ,
125- observable : EmbeddedIdentifiedStixObject ,
103+ observable : Reference ,
126104 name : str | None ,
127105 coordinates : Coordinates | None ,
128106 ) -> Generator [BaseObject , None , None ]:
@@ -154,7 +132,7 @@ def _generate_administrative_area(
154132 ]
155133
156134 def _generate_hostnames (
157- self , observable : EmbeddedIdentifiedStixObject , dns : HostDNS | None
135+ self , observable : Reference , dns : HostDNS | None
158136 ) -> Generator [BaseObject , None , None ]:
159137 if not dns :
160138 return
@@ -176,7 +154,7 @@ def _generate_hostnames(
176154
177155 def _generate_organization (
178156 self ,
179- observable : EmbeddedIdentifiedStixObject ,
157+ observable : Reference ,
180158 name : str | None ,
181159 ) -> Generator [BaseObject , None , Organization | None ]:
182160 if not name :
@@ -199,7 +177,7 @@ def _generate_organization(
199177
200178 def _generate_autonomous_system (
201179 self ,
202- observable : EmbeddedIdentifiedStixObject ,
180+ observable : Reference ,
203181 number : int | None ,
204182 name : str | None ,
205183 description : str | None ,
@@ -226,7 +204,7 @@ def _generate_autonomous_system(
226204
227205 def _generate_software (
228206 self ,
229- observable : EmbeddedIdentifiedStixObject ,
207+ observable : Reference ,
230208 name : str | None ,
231209 vendor : str | None ,
232210 cpe : str | None ,
@@ -317,7 +295,7 @@ def _generate_certificate(
317295
318296 def _generate_note (
319297 self ,
320- observable : EmbeddedIdentifiedStixObject ,
298+ observable : Reference ,
321299 content : str | None ,
322300 publication_date : str | None ,
323301 port : int | None ,
@@ -335,7 +313,7 @@ def _generate_note(
335313 )
336314
337315 def _generate_services (
338- self , observable : EmbeddedIdentifiedStixObject , services : list [Service ] | None
316+ self , observable : Reference , services : list [Service ] | None
339317 ) -> Generator [BaseObject , None , None ]:
340318 for service in services or []:
341319 for software in service .software or []:
@@ -363,7 +341,7 @@ def _generate_services(
363341 )
364342
365343 def _generate_ip (
366- self , observable : EmbeddedIdentifiedStixObject , ip : str
344+ self , observable : Reference , ip : str
367345 ) -> Generator [BaseObject , None , None | IPV4Address | IPV6Address ]:
368346 ip_version = ipaddress .ip_network (ip , strict = False ).version
369347 if ip_version == 4 :
@@ -384,7 +362,7 @@ def _generate_ip(
384362 def generate_octi_objects (
385363 self , stix_entity : dict [str , Any ], data : Host
386364 ) -> Generator [BaseObject , None , None ]:
387- observable = EmbeddedIdentifiedStixObject ( stix_object = stix_entity )
365+ observable = Reference ( id = stix_entity . get ( "id" ) )
388366
389367 yield from [
390368 self .author ,
@@ -461,7 +439,7 @@ def generate_octi_objects_from_hosts(
461439 ) -> Generator [BaseObject , None , None ]:
462440 for host in hosts :
463441 ip_stix = yield from self ._generate_ip (
464- observable = EmbeddedIdentifiedStixObject ( stix_object = stix_entity ),
442+ observable = Reference ( id = stix_entity . get ( "id" ) ),
465443 ip = host .ip ,
466444 )
467445 yield from self .generate_octi_objects (
0 commit comments